算是学了下map的用法

题意就是找到最多的中心点,然后剩下就是得到没有匹配到最多中心点的数,这就是需要添加的点数

#include<bits/stdc++.h>

using namespace std;

typedef pair<int, int> PII;
typedef map<PII, int> MII;
MII::iterator iter;

const int N = 1010;
PII p[N];
MII M;
int n;

int main()
{
	scanf("%d", &n);
	
	for(int i = 1; i <= n; i++)
		scanf("%d%d", &p[i].first, &p[i].second);

        int maxv = 0;
	for(int i = 1; i <= n; i++) //双层循环都从1开始到n保证可以遍历每个点的边以至于直接得到匹配到最多中心点的点数
		for(int j = 1; j <= n; j++){
			int xc = p[i].first + p[j].first;
			int yc = p[i].second + p[j].second;
			
			M[{xc, yc}]++; //该元素不存在时直接加入map即可
			if(M[{xc, yc}] > maxv) maxv = M[{xc, yc}];
		}

	
	int res = n - maxv;
	
	printf("%d\n", res);
	
	return 0;
}