刚开始还打算用map,后来发现,按x第一关键字, y第二关键字排序即可, 感觉有点像基数排序
 
#include <iostream>
#include <stdio.h>
#include <algorithm>

using namespace std;
#define  MAX 1000000

struct per
{
	long x,y;
};

per num[MAX];

bool cmp (const per& a, const per& b)
{
	if (a.x < b.x) 
		return true;
	else if (a. x > b.x)
		return false;
	else
		return a.y < b.y;
}
int main()
{
	int n;
	long x, y;
	int count = 0;
	int i;
	while (cin >> n)
	{
		 count = 0;
		for ( i = 0; i < n; i++)
			scanf("%ld%ld", &num[i].x, &num[i].y);		
		
		sort(num, num+n, cmp);

		i = 0;
		long key;
	    while (1)
		{
			if (i >= n)
				break;
			key = num[i].x;
			count = 1;
			for (int j = i+1; j < n; j++)
				if (num[j].x == key)
					count++;
				else
					break;
			cout << key << " ";

			if (count % 2 == 0)
				cout << (num[i + (count-1)/2+1].y + num[i+(count-1)/2].y)/2 << endl;
			else
				cout << num[i + (count-1)/2].y << endl;
			i += count;
		}
	
	}
	return 0;	
}

相关文章:

  • 2021-12-24
  • 2022-12-23
  • 2021-11-06
  • 2021-08-08
  • 2021-09-04
  • 2021-08-26
  • 2021-08-05
猜你喜欢
  • 2021-07-05
  • 2021-08-07
  • 2022-02-18
  • 2022-02-26
  • 2021-10-07
  • 2022-01-29
相关资源
相似解决方案