176812025-09-13 10:02:16TakacsAndrasSíkság (55)cpp17Időlimit túllépés 34/55300ms2540 KiB
#include <bits/stdc++.h>
using namespace std;
vector<int> st1,st2;
int n;
int qr1(int l, int r) {
    l += n;
    r += n;
    int rt = st1[l];
    while (l && r && l <= r) {
        if (l % 2 == 1) rt = min(rt,st1[l++]);
        if (r % 2 == 0) rt = min(rt,st1[r--]);
        l /= 2;
        r /= 2;
    }
    return rt;
}
int qr2(int l, int r) {
    l += n;
    r += n;
    int rt = st2[l];
    while (l && r && l <= r) {
        if (l % 2 == 1) rt = max(rt,st2[l++]);
        if (r % 2 == 0) rt = max(rt,st2[r--]);
        l /= 2;
        r /= 2;
    }
    return rt;
}
int main() {
    cin >> n;
    vector<int> a(n);
    st1.resize(2*n);
    st2.resize(2*n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        st1[i+n] = a[i];
        st2[i+n] = a[i];
    }
    for (int i = n-1; i >= 0; i--) st1[i] = min(st1[i*2],st1[i*2+1]);
    for (int i = n-1; i >= 0; i--) st2[i] = max(st2[i*2],st2[i*2+1]);
    int l = 1, h = n+1;
    int out = 1;
    while (l+1 < h) {
        int m = (l+h)/2;
        int o = -1;
        for (int i = 0; i <= n-m; i++) {
            int q1 = qr1(i,i+m-1);
            int q2 = qr2(i,i+m-1);
            if (q2-q1 <= 1) {
                o = i;
                break;
            }
        }
        if (o == -1) h = m;
        else {
            l = m;
            out = o+1;
        }
    }
    cout << l << ' ' << out << '\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base34/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/018ms760 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva2/22ms508 KiB
9Elfogadva3/32ms316 KiB
10Elfogadva3/317ms592 KiB
11Elfogadva3/313ms600 KiB
12Elfogadva3/33ms592 KiB
13Időlimit túllépés0/3202ms2540 KiB
14Időlimit túllépés0/3252ms2372 KiB
15Időlimit túllépés0/3222ms2356 KiB
16Időlimit túllépés0/3300ms2356 KiB
17Elfogadva3/3168ms2356 KiB
18Időlimit túllépés0/3256ms2356 KiB
19Időlimit túllépés0/3219ms2100 KiB
20Időlimit túllépés0/3280ms2100 KiB
21Elfogadva3/375ms1332 KiB
22Elfogadva3/3196ms1844 KiB