|
|
вернуться в форумwrong answer Послано CS03 31 июл 2012 04:30 why my program give wrong answer? #include<iostream> #include<vector> #include<algorithm> #include<string> #include <sstream> using namespace std; struct RPair { int x; int y; }; int main() { int N; while(cin>>N) { int p1,p2; RPair P; vector<int> x_hold; vector<int> y_hold; vector<RPair> P_hold; string stringx_hold; string stringy_hold; vector<int> level; level.resize(N); ostringstream convert; string result; for(int i=0;i<N;i++) { cin>>p1>>p2; x_hold.push_back(p1); y_hold.push_back(p2); P.x=p1;P.y=p2; P_hold.push_back(P); convert<<p1; result=convert.str(); stringx_hold+=result[result.size()-1]; convert<<p2; result=convert.str(); stringy_hold+=result[result.size()-1]; } sort(x_hold.begin(),x_hold.end()); sort(y_hold.begin(),y_hold.end()); sort(stringx_hold.begin(),stringx_hold.end()); sort(stringy_hold.begin(),stringy_hold.end()); for(int i=0;i<P_hold.size();i++) { RPair temp; for(int j=0;j<P_hold.size();j++) { if(P_hold[i].x<P_hold[j].x) { temp=P_hold[i]; P_hold[i]=P_hold[j]; P_hold[j]=temp; } if(P_hold[i].x==P_hold[j].x&&P_hold[i].y<P_hold[j].y) { temp=P_hold[i]; P_hold[i]=P_hold[j]; P_hold[j]=temp; } } } size_t found; int t=0; for(int i=0;i<x_hold.size();i++) { t=i; if(i!=x_hold.size()-1) { while(P_hold[t].x==P_hold[t+1].x&&P_hold[t].y==P_hold[t+1].y) { t++; if(t==x_hold.size()-1) break; } } if(i==t) { convert<<P_hold[t].y; result=convert.str(); found=stringy_hold.find(result[result.size()-1]); level[min((int)found,t)]++; //stringy_hold.insert((int)found,"n"); stringy_hold.replace((int)found,1,"n"); } else { int hold= level[t]++; //stringy_hold.insert((int)found,"n"); stringy_hold.replace(t,1,"n"); for(int j=i;j<t;j++) { level[t]++; stringy_hold.replace(j,1,"n"); } } i=t; } for(int i=0;i<level.size();i++) cout<<level[i]<<"\n"; } } |
|
|