Submission #756994

#TimeUsernameProblemLanguageResultExecution timeMemory
756994Valters07Sequence (APIO23_sequence)C++17
0 / 100
71 ms4208 KiB
#include <bits/stdc++.h>
#include "sequence.h"
#define ll long long
#define pb push_back
#define fi first
#define se second
using namespace std;
int sequence(int n, vector<int> a)
{
    int peak = 0;
    while(peak+1<n&&a[peak]<=a[peak+1])
        peak++;
    int res = 1, l = 0, r;
    for(int i = 1;i<n;i++)
        if(a[i]!=a[i-1])
            l=i;
        else
            res=max(res,i-l+1);
    l = r = peak;
    while(l>0&&a[l-1]==a[l])
        l--;
    while(r<n-1&&a[r+1]==a[r])
        r++;
    while(l>0&&r<n-1)
    {
        if(a[l]>a[r])
            l--;
        else if(a[l]<a[r])
            r++;
        else
            l--,
            r++;
        int c1 = 1, c2 = 1;
        while(l>0&&a[l-1]==a[l])
            c1++,
            l--;
        while(r<n-1&&a[r+1]==a[r])
            c2++,
            r++;
        if(a[l]==a[r])
        {
            int mi = l+(n-r-1), cur = c1+c2, mx = n-mi-cur;
            if(abs(mi-mx)<=cur)
                res=max(res,cur);
        }
    }
    return res;
}
#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...