#include <cstdio> #include <vector> #include <map> using namespace std; class praca { public: int L; vector<int> T; bool operator<(const praca &c) const { vector<int>::const_iterator it_a,it_b; it_a = this->T.begin(); it_b = c.T.begin(); while (it_a != this->T.end()) { if ((*it_a) != (*it_b)) return (*it_a) < (*it_b); ++it_a; ++it_b; } return this->L < c.L; } }; int main() { int N,n,M,m,p,x; praca pr; map<praca,int> PR; map<praca,int>::iterator PRi; scanf("%d %d",&N,&M); pr.L = 1; for (n = 0; n < N; n++) { scanf("%d",&m); pr.T.push_back(m); } PR.insert(pair<praca,int>(pr,0)); for (m = 0; m < M-1; m++) { scanf("%d %d",&p,&x); pr.L++; pr.T[p-1] = x; PR.insert(pair<praca,int>(pr,0)); } for (PRi = PR.begin(); PRi != PR.end(); ++ PRi) { printf("%d ",PRi->first.L); } printf("\n"); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <cstdio> #include <vector> #include <map> using namespace std; class praca { public: int L; vector<int> T; bool operator<(const praca &c) const { vector<int>::const_iterator it_a,it_b; it_a = this->T.begin(); it_b = c.T.begin(); while (it_a != this->T.end()) { if ((*it_a) != (*it_b)) return (*it_a) < (*it_b); ++it_a; ++it_b; } return this->L < c.L; } }; int main() { int N,n,M,m,p,x; praca pr; map<praca,int> PR; map<praca,int>::iterator PRi; scanf("%d %d",&N,&M); pr.L = 1; for (n = 0; n < N; n++) { scanf("%d",&m); pr.T.push_back(m); } PR.insert(pair<praca,int>(pr,0)); for (m = 0; m < M-1; m++) { scanf("%d %d",&p,&x); pr.L++; pr.T[p-1] = x; PR.insert(pair<praca,int>(pr,0)); } for (PRi = PR.begin(); PRi != PR.end(); ++ PRi) { printf("%d ",PRi->first.L); } printf("\n"); return 0; } |