206162026-01-07 20:47:21algoproSíkság (55)cpp17Elfogadva 55/5513ms1020 KiB
// UUID: cea45de0-8ac9-47da-816a-f635b922f177
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
	ios::sync_with_stdio(false);
    cin.tie(0);
    
    int n;
    cin >> n;

    vector<int>h(n);
    for (int i = 0; i <n; i++) cin >> h[i];

    int s = 0, e = 0;
    pair <int,int> lh = {1,1};
    array<pair<int,int> , 3>akt;
    akt[0].first = h[0];
    akt[0].second = 1;
    akt[1].first = -1;
    akt[1].second = 0;
    akt[2].first = -1;
    akt[2].second = 0;

    while(e < n-1){
        
        if (akt[0].second == 0) {
            akt[0].first = akt[1].first;
            akt[0].second = akt[1].second;
            akt[1].first = -1;
            akt[1].second = 0;
        }
        if (akt[1].second == 0) {
            akt[1].first = akt[2].first;
            akt[1].second = akt[2].second;
            akt[2].first = -1;
            akt[2].second = 0;
        }
        
        /*cout << s+1 << " "<<e+1<<'\n';
        cout << akt[0].first << " : "<<akt[0].second<<'\n';
        cout << akt[1].first << " : "<<akt[1].second<<'\n';
        cout << akt[2].first << " : "<<akt[2].second<<"\n\n"; */
        
        if (akt[2].second == 0 && (akt[1].second == 0 || abs(akt[0].first - akt[1].first) == 1)){
            if (e-s+1 > lh.first){
                lh.first = e-s+1;
                lh.second = s+1;
            }

            if (h[e+1] == akt[0].first){
                akt[0].second++;
                e++;
            }
            else if (h[e+1] == akt[1].first){
                akt[1].second++;
                e++;
            }
            else{
                akt[2].first = h[e+1];
                akt[2].second = 1;
                e++;
            }
        }

        else {
            if (h[s] == akt[0].first)akt[0].second--;
            if (h[s] == akt[1].first)akt[1].second--;
            if (h[s] == akt[2].first)akt[2].second--;
            s++;
        }
    }
    if (akt[2].second == 0 && (akt[1].second == 0 || abs(akt[0].first - akt[1].first) == 1)){
    if (e-s+1 > lh.first){
            lh.first = e-s+1;
            lh.second = s+1;
        }
    }
    cout << lh.first <<" "<<lh.second;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/02ms316 KiB
2Elfogadva0/02ms316 KiB
3Elfogadva2/22ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms356 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva2/21ms388 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/32ms316 KiB
11Elfogadva3/32ms316 KiB
12Elfogadva3/32ms316 KiB
13Elfogadva3/312ms820 KiB
14Elfogadva3/38ms820 KiB
15Elfogadva3/39ms820 KiB
16Elfogadva3/312ms820 KiB
17Elfogadva3/312ms824 KiB
18Elfogadva3/312ms1020 KiB
19Elfogadva3/313ms820 KiB
20Elfogadva3/312ms820 KiB
21Elfogadva3/37ms564 KiB
22Elfogadva3/39ms564 KiB