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; }