Submission #96768

#TimeUsernameProblemLanguageResultExecution timeMemory
96768Rouge_HugoDoktor (COCI17_doktor)C++14
10 / 100
742 ms49508 KiB
#include <bits/stdc++.h> using namespace std; const int mw=5*100002; int pr[mw],a[mw],t[mw]; map<double,vector<pair<int,int>>>m; int main() { int sum=0; int n;cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; t[a[i]]=i; if (a[i]==i) { sum++; } pr[i]=sum; } for(int i=1;i<=n;i++) { double u=(a[i]+i)/2.0; m[u].push_back({min(a[i],i),max(a[i],i)}); } int mx=0; pair<int,int>b; for(auto it :m) {sum=0; //sort (m[it.first].begin(),m[it.first].end()); for(auto pp:m[it.first]) { if (mx<(++sum)+pr[n]-pr[pp.second]+pr[pp.first-1]) { mx=++sum+pr[n]-pr[pp.second]+pr[pp.first-1]; b={pp}; } } } if (t[b.first]>t[b.second]) { cout<<b.second<<" "<<b.first; return 0; }cout<<b.first<<" "<<b.second; return 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...