Submission #82242

#TimeUsernameProblemLanguageResultExecution timeMemory
82242GenezioDoktor (COCI17_doktor)C++14
60 / 100
289 ms41184 KiB
#include<bits/stdc++.h> using namespace std; #define pii pair<int,int> #define mp make_pair #define F first #define S second #define pb push_back #define ll long long const int N = 500010; const int INF = 0x3f3f3f3f; const ll mod = 1e9+7; pii ans; int m; vector<int> e[N]; vector<int> o[N]; int v[N]; int pre[N]; int pos[N]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n,t=0; int ptfix=-1; cin>>n; for(int i=1;i<=n;i++) { cin>>v[i]; pre[i]=pre[i-1]; if(v[i]==i) ptfix=i,pre[i]++; if(abs(v[i]-i)%2) { e[(v[i]+i)>>1].push_back(i); //pos[i]=e[(v[i]+i)>>1].size(); } else { o[(v[i]+i)>>1].push_back(i); //pos[i]=e[(v[i]+i)>>1].size(); } } for(int i=1;i<=n;i++) { if(abs(v[i]-i)%2) { vector<int>::iterator it = lower_bound(e[(v[i]+i)>>1].begin(),e[(v[i]+i)>>1].end(),max(v[i],i)); vector<int>::iterator hit = lower_bound(e[(v[i]+i)>>1].begin(),e[(v[i]+i)>>1].end(),min(v[i],i)-1); int a=it-hit+1; //cout<<i<<" "<<a<<" "; a-=(pre[max(v[i],i)]-pre[min(v[i],i)-1]); //cout<<a<<"\n"; if(a>m) { m=a; if(v[i]>i) { ans.F=v[i]; ans.S=v[v[i]]; } else { ans.F=v[v[i]]; ans.S=v[i]; } } } else { vector<int>::iterator it = lower_bound(o[(v[i]+i)>>1].begin(),o[(v[i]+i)>>1].end(),max(v[i],i)); vector<int>::iterator hit = lower_bound(o[(v[i]+i)>>1].begin(),o[(v[i]+i)>>1].end(),min(v[i],i)-1); int a=it-hit+1; //cout<<i<<" "<<a<<" "; a-=(pre[max(v[i],i)]-pre[min(v[i],i)-1]); if(v[(v[i]+1)>>1]==(v[i]+1)>>1) a++; //cout<<a<<"\n"; if(a>m) { m=a; if(v[i]>i) { ans.F=v[i]; ans.S=v[v[i]]; } else { ans.F=v[v[i]]; ans.S=v[i]; } } } } if(m) { cout<<ans.F<<" "<<ans.S<<"\n"; } else { cout<<ptfix<<" "<<ptfix<<"\n"; } }

Compilation message (stderr)

doktor.cpp: In function 'int main()':
doktor.cpp:26:11: warning: unused variable 't' [-Wunused-variable]
     int n,t=0;
           ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...