Submission #640494

#TimeUsernameProblemLanguageResultExecution timeMemory
640494Urvuk3Xor Sort (eJOI20_xorsort)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int INF=1e9; const ll LINF=1e18; #define fi first #define se second #define pii pair<int,int> #define mid ((l+r)/2) #define sz(a) (int((a).size())) #define all(a) a.begin(),a.end() #define endl "\n" #define PRINT(x) cerr<<#x<<'='<<x<<endl; #define pb push_back #define PRINTvec(niz) { cerr<<#niz<<"="; for(auto _i:niz) cerr<<_i<<" "; cerr<<endl; } void Solve(){ int N,S; cin>>N>>S; bool subtask1=(2<=N && N<=150 && S==1); bool subtask2=(2<=N && N<=200 && S==1); bool subtask3=(2<=N && N<=1000 && S==2); vector<int> a(N+1); for(int i=1;i<=N;i++) cin>>a[i]; vector<pii> opers; function<void(int,int)> Oper=[&](int i,int j){ if(abs(i-j)==1) a[i]=a[i]^a[j]; opers.pb({i,j}); }; function<bool(int,int)> Has=[&](int x,int bit){ return (x&(1<<bit))>0; }; if(subtask1){ for(int i=1;i<=N;i++){ for(int j=1;j<=N-1;j++){ if(a[j]>a[j+1]){ Oper(j,j+1); Oper(j+1,j); Oper(j,j+1); } } } } else if(subtask2){ } else if(subtask3){ set<int> s; function<void(int,int,int)> Update=[&](int i,int j,int bit){ if(!Has(a[i],bit) && s.count(i)) s.erase(i); if(!Has(a[j],bit) && s.count(j)) s.erase(j); if(Has(a[i],bit)) s.insert(i); if(Has(a[j],bit)) s.insert(j); }; for(int bit=20;bit>=0;bit--){ s.clear(); bool pomeren=false; for(int i=L;i<=R;i++){ if(Has(a[i],bit)){ s.insert(i); pomeren=true; } } while(!s.empty() && !(sz(s)==1 && s.count(R))){ int i=*(s.begin()); if(Has(a[i+1],bit)){ Oper(i,i+1); Update(i,i+1,bit); } else{ Oper(i+1,i); Update(i,i+1,bit); Oper(i,i+1); Update(i,i+1,bit); } } if(pomeren) --R; } } cout<<sz(opers)<<endl; for(auto p:opers) cout<<p.fi<<" "<<p.se<<endl; PRINTvec(a); } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t; //cin>>t; t=1; while(t--){ Solve(); } return 0; }

Compilation message (stderr)

xorsort.cpp: In function 'void Solve()':
xorsort.cpp:61:23: error: 'L' was not declared in this scope
   61 |             for(int i=L;i<=R;i++){
      |                       ^
xorsort.cpp:61:28: error: 'R' was not declared in this scope
   61 |             for(int i=L;i<=R;i++){
      |                            ^
xorsort.cpp:67:55: error: 'R' was not declared in this scope
   67 |             while(!s.empty() && !(sz(s)==1 && s.count(R))){
      |                                                       ^
xorsort.cpp:77:27: error: 'R' was not declared in this scope
   77 |             if(pomeren) --R;
      |                           ^