#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int tab[501000];
int a[501000];
int b[501000];
int kopia[501000];
int kopia2[501000];
vector<int>v;
int n,k;
#ifdef _WIN32
#define getc_unlocked getc
#endif // _WIN32
inline void read(int *n){
register char c = 0;
while (c < 33) c=getc_unlocked(stdin);
(*n) = 0;
while (c>32) {(*n)=(*n)*10LL + (c-48); c=getc_unlocked(stdin);}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
//cin>>n>>k;
read(&n);
read(&k);
for(int i=1;i<=n;++i){
read(&tab[i]);
//cin>>tab[i];
}
for(int i=2;i<=k;++i){
read(&a[i]);
read(&b[i]);
//cin>>a[i]>>b[i];
}
for(int i=1;i<=k;++i){
v.push_back(i);
}
sort(v.begin(),v.end(),[](int poc,int kon){
for(int i=1;i<=n;++i){
kopia[i]=tab[i];
}
int q1,q2;
if(poc<kon){
q1=poc;
q2=kon;
}
else{
q1=kon;
q2=poc;
}
for(int i=1;i<=q1;++i){
kopia[a[i]]=b[i];
}
for(int i=1;i<=n;++i){
kopia2[i]=kopia[i];
}
for(int i=q1+1;i<=q2;++i){
kopia2[a[i]]=b[i];
}
int wyg=-1;
for(int i=1;i<=n;++i){
if(kopia[i]<kopia2[i]){
wyg=1;
break;
}
if(kopia[i]>kopia2[i]){
wyg=2;
break;
}
}
if(wyg==-1)return poc<kon;
if(wyg==1)return poc<kon;
return poc>kon;
});
for(int i=0;i<v.size();++i){
cout<<v[i]<<" ";
}
}
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #include<iostream> #include<algorithm> #include<vector> using namespace std; int tab[501000]; int a[501000]; int b[501000]; int kopia[501000]; int kopia2[501000]; vector<int>v; int n,k; #ifdef _WIN32 #define getc_unlocked getc #endif // _WIN32 inline void read(int *n){ register char c = 0; while (c < 33) c=getc_unlocked(stdin); (*n) = 0; while (c>32) {(*n)=(*n)*10LL + (c-48); c=getc_unlocked(stdin);} } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); //cin>>n>>k; read(&n); read(&k); for(int i=1;i<=n;++i){ read(&tab[i]); //cin>>tab[i]; } for(int i=2;i<=k;++i){ read(&a[i]); read(&b[i]); //cin>>a[i]>>b[i]; } for(int i=1;i<=k;++i){ v.push_back(i); } sort(v.begin(),v.end(),[](int poc,int kon){ for(int i=1;i<=n;++i){ kopia[i]=tab[i]; } int q1,q2; if(poc<kon){ q1=poc; q2=kon; } else{ q1=kon; q2=poc; } for(int i=1;i<=q1;++i){ kopia[a[i]]=b[i]; } for(int i=1;i<=n;++i){ kopia2[i]=kopia[i]; } for(int i=q1+1;i<=q2;++i){ kopia2[a[i]]=b[i]; } int wyg=-1; for(int i=1;i<=n;++i){ if(kopia[i]<kopia2[i]){ wyg=1; break; } if(kopia[i]>kopia2[i]){ wyg=2; break; } } if(wyg==-1)return poc<kon; if(wyg==1)return poc<kon; return poc>kon; }); for(int i=0;i<v.size();++i){ cout<<v[i]<<" "; } } |
English