Submission #82289

#TimeUsernameProblemLanguageResultExecution timeMemory
82289GenezioDoktor (COCI17_doktor)C++14
100 / 100
399 ms43048 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
#define mid ((l+r)>>1)

const int N = 500010;
const int INF = 0x3f3f3f3f;
const ll mod = 1e9+7;

 pii ans;
 int m;
 vector<int> e[2*N];
 int v[N];
 int pre[N];
 //int pos[N];

 /*int bs(vector<int> s,int l,int r,int val) {
 	if(l==r) {
 		return l;
 	}
 	if(s[mid]<val) {

 	}
 }*/

int main() {
	//ios::sync_with_stdio(false);
 	//cin.tie(0);
    int n,t=0;
    int ptfix=-1;
    cin>>n;
    if(n==1) {
    	cin>>n;
    	cout<<"1 1\n";
    	return 0;
    }
    for(int i=1;i<=n;i++) {
        cin>>v[i];
        pre[i]=pre[i-1];
        if(v[i]==i) ptfix=i,pre[i]++;
        e[v[i]+i].push_back(i);
    }
    for(int i=1;i<=n;i++) {
  		vector<int>::iterator it = upper_bound(e[v[i]+i].begin(),e[v[i]+i].end(),max(v[i],i));
  		vector<int>::iterator hit = lower_bound(e[v[i]+i].begin(),e[v[i]+i].end(),min(v[i],i)-1);
  		int a=it-hit;
  		a-=(pre[max(v[i],i)]-pre[min(v[i],i)-1]);
  		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:35: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...