127762024-12-30 11:47:52ruffbrigiSíkság (55)cpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms320 KiB
2Elfogadva0/04ms572 KiB
3Elfogadva2/21ms320 KiB
4Elfogadva2/21ms320 KiB
5Elfogadva2/21ms320 KiB
6Elfogadva2/21ms320 KiB
7Elfogadva3/31ms500 KiB
8Elfogadva2/21ms332 KiB
9Elfogadva3/31ms320 KiB
10Elfogadva3/34ms488 KiB
11Elfogadva3/34ms320 KiB
12Elfogadva3/34ms824 KiB
13Elfogadva3/339ms748 KiB
14Elfogadva3/348ms2464 KiB
15Elfogadva3/341ms1936 KiB
16Elfogadva3/348ms876 KiB
17Elfogadva3/350ms1856 KiB
18Elfogadva3/348ms1532 KiB
19Elfogadva3/348ms1852 KiB
20Elfogadva3/348ms1488 KiB
21Elfogadva3/324ms1080 KiB
22Elfogadva3/339ms1848 KiB