127762024-12-30 11:47:52ruffbrigiSíkság (55)cpp17Accepted 55/5550ms2464 KiB
#include <iostream>
#include <set>

using namespace std;

int main()
{
    int n,m;
    cin>>n;
    int a[n+1];
    multiset<int> nov;
    cin>>m;
    a[1]=m;
    nov.insert(a[1]);
    int maxsiksag=1,mini=1,maxi=1,kezd=1,maxkezd=1;
    for(int i=2;i<=n;i++)
    {
        cin>>m;
        a[i]=m;
        if((m<*nov.begin() && *nov.begin()-m>1) || (m>*nov.rbegin() && m-*nov.rbegin()>1))
        {
            if(nov.size()>maxsiksag)
            {
                maxsiksag=nov.size();
                maxkezd=kezd;
            }
            nov.clear();
            nov.insert(m);
            kezd=i;
        }
        else
        {
            int ln=*nov.rbegin(),lk=*nov.begin();
            nov.insert(a[i]);
            if(*nov.begin()-*nov.rbegin()==-1 || *nov.begin()-*nov.rbegin()==0)
            {
                if(a[i]==*nov.begin()) mini=i;
                if(a[i]==*nov.rbegin()) maxi=i;
            }
            else
            { //cout<<"hoppa: "<<i<<" m="<<m<<" nagyobb="<<ln<<endl;
                if(m>ln)
                {
                    //cout<<"mini="<<mini<<endl;
                    if(nov.size()-1>maxsiksag)
                    {
                        maxsiksag=nov.size()-1;
                        maxkezd=kezd;
                    }
                    nov.clear();
                    for(int j=mini+1;j<=i;j++)
                    {
                        nov.insert(a[j]);
                    }
                    kezd=mini+1;
                    mini=maxi;
                    maxi=i;
                }
                else
                {
                    //cout<<"m="<<m<<" lk="<<lk<<endl;
                    if(nov.size()-1>maxsiksag)
                    {
                        maxsiksag=nov.size()-1;
                        maxkezd=kezd;
                    }
                    nov.clear();
                    for(int j=maxi+1;j<=i;j++)
                    {
                        nov.insert(a[j]);
                    }
                    kezd=maxi+1;
                    maxi=mini;
                    mini=i;
                }
                //cout<<"uj kezd: "<<kezd<<endl;
            }
        }
    }
    if(nov.size()>maxsiksag)
    {
        maxsiksag=nov.size();
        maxkezd=kezd;
    }
    cout<<maxsiksag<<" "<<maxkezd;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base55/55
1Accepted0/01ms320 KiB
2Accepted0/04ms572 KiB
3Accepted2/21ms320 KiB
4Accepted2/21ms320 KiB
5Accepted2/21ms320 KiB
6Accepted2/21ms320 KiB
7Accepted3/31ms500 KiB
8Accepted2/21ms332 KiB
9Accepted3/31ms320 KiB
10Accepted3/34ms488 KiB
11Accepted3/34ms320 KiB
12Accepted3/34ms824 KiB
13Accepted3/339ms748 KiB
14Accepted3/348ms2464 KiB
15Accepted3/341ms1936 KiB
16Accepted3/348ms876 KiB
17Accepted3/350ms1856 KiB
18Accepted3/348ms1532 KiB
19Accepted3/348ms1852 KiB
20Accepted3/348ms1488 KiB
21Accepted3/324ms1080 KiB
22Accepted3/339ms1848 KiB