Submission #92926

#TimeUsernameProblemLanguageResultExecution timeMemory
92926vexDoktor (COCI17_doktor)C++14
100 / 100
210 ms45928 KiB
#include <bits/stdc++.h>
#define maxn 500005
using namespace std;

int n;
int niz[maxn];
vector<int>a[2*maxn];
int l[maxn];

int fix(int levo,int desno)
{
    return l[desno]-l[levo-1];
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    cin>>n;
    l[0]=0;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        a[x+i].push_back(abs(x-i));

        l[i]=l[i-1];
        if(x==i)l[i]++;

        niz[i]=x;
    }

    int sol=l[n];
    int levo=1;
    int desno=1;
    for(int i=1;i<=2*n;i++)
    {
        sort(a[i].begin(),a[i].end());
        int len=a[i].size();

        for(int j=0;j<len;j++)
        {
            int left=(i-a[i][j])/2;
            int right=(i+a[i][j])/2;
            int tre=j+1+l[left-1]+fix(right+1,n);
            if(tre>sol)
            {
                sol=tre;
                levo=left;
                desno=right;
            }
        }
    }

    cout<<niz[levo]<<" "<<niz[desno]<<endl;
    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...