Submission #639429

#TimeUsernameProblemLanguageResultExecution timeMemory
639429inksamuraiDoktor (COCI17_doktor)C++17
0 / 100
198 ms40256 KiB
#include <bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=0;i<n;i++) #define per(i,n) for(int i=n-1;i>=0;i--) #define rng(i,c,n) for(int i=c;i<n;i++) #define fi first #define se second #define pb push_back #define sz(a) (int)a.size() #define vec(...) vector<__VA_ARGS__> #define _3xaMC2q ios::sync_with_stdio(0),cin.tie(0) typedef long long ll; using pii=pair<int,int>; using vi=vector<int>; void print(){cout<<'\n';} template<class h,class...t> void print(const h&v,const t&...u){cout<<v<<' ',print(u...);} //e signed main(){ _3xaMC2q; int n; cin>>n; vi a(n); rep(i,n){ cin>>a[i]; } rep(i,n){ a[i]-=1; } vec(vi) mp(2*n+11); rep(i,n){ mp[a[i]+i].pb(i); } vi dl(n); rep(i,n){ if(i)dl[i]=dl[i-1]; if(a[i]==i){ dl[i]++; } } vi dr(n); per(i,n){ if(i<n-1)dr[i]=dr[i+1]; if(a[i]==i){ dr[i]++; } } int ma=dr[0]; pii p={0,0}; rep(i,n){ int j=a[i]; if(i!=j){ int now=0; if(i<j){ int v=i+a[i]; auto it=prev(lower_bound(mp[v].begin(),mp[v].end(),j)); now=(int)(it-mp[v].begin()); now-=(int)(lower_bound(mp[v].begin(),mp[v].end(),i)-mp[v].begin()); now+=1; }else{ int v=i+a[i]; auto it=lower_bound(mp[v].begin(),mp[v].end(),j); now=(int)(it-mp[v].begin()); now=(int)(lower_bound(mp[v].begin(),mp[v].end(),i)-mp[v].begin())-now; now+=1; } now+=dl[min(i,j)]; now+=dr[max(i,j)]; if(ma<now){ ma=now; p={i,j}; } } } p.fi=a[p.fi]+1; p.se=a[p.se]+1; if(p.fi>p.se)swap(p.fi,p.se); print(p.fi,p.se); }
#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...