JOI2008予選 問題4@C++(8)

まあ、そんなに難しくはない。

stars_partのsortは不要な気がするが気にしない。

#include <cstdio>
#include <algorithm>
#include <vector>

using namespace std;

int main(int argc,char* argv[])
{
	int m,n;
	scanf("%d\n",&m);
	vector<pair<int,int> > stars_part(m);
	for(int i=0;i<m;i++) {
		scanf("%d %d\n",&stars_part[i].first,&stars_part[i].second);
	}
	scanf("%d\n",&n);
	vector<pair<int,int> > stars_all(n);
	for(int i=0;i<n;i++) {
		scanf("%d %d\n",&stars_all[i].first,&stars_all[i].second);
	}
	sort(stars_part.begin(),stars_part.end());
	sort(stars_all.begin(),stars_all.end());
	for(vector<pair<int,int> >::iterator i=stars_all.begin();i!=stars_all.end();i++) {
		//pair<int,int> diff=*i-stars_part[0];
		pair<int,int> diff(i->first-stars_part[0].first,i->second-stars_part[0].second);
		bool flag=true;
		for(vector<pair<int,int> >::iterator j=stars_part.begin();j!=stars_part.end();j++) {
			//pair<int,int> current=(*j)+diff;
			pair<int,int> current(j->first+diff.first,j->second+diff.second);
			if(!binary_search(stars_all.begin(),stars_all.end(),current)) {
				flag=false;
				break;
			}
		}
		if(flag) {
			printf("%d %d\n",diff.first,diff.second);
			break;
		}
	}
	return 0;
}