Submission #1354970

#TimeUsernameProblemLanguageResultExecution timeMemory
1354970mxhrvsGift Boxes (EGOI25_giftboxes)C++20
19 / 100
91 ms16084 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll rx,lx,r,l;
void check() {
    if (rx - lx < r - l) {
        r = rx;
        l = lx;
    }
}
signed main(){
    ll t,n;
    cin >> t >> n;
    vector<ll> suff(n,-1),pref(n,-1),cnt(t,0);
    vector<ll> a(n,0);
    for(ll i = 0; i < n; i ++){
        cin >> a[i];
        if(pref[a[i]] == -1) pref[a[i]] = i;
        suff[a[i]] = i;
    }
    ll mxl = 0,mxr = n - 1;
    for(ll i = 0; i < n; i ++){
        if(cnt[a[i]] != 0) break;
        cnt[a[i]] ++;
        mxl ++;
    }
    cnt.resize(t,0);
    
    for(ll i = n - 1; i >= 0; i --){
        if(cnt[a[i]] != 0) break;
        cnt[a[i]] ++;
        mxr --;
    }
    r = n - 1;
    rx = mxr;
    for (ll i = 0; i < mxl; i++) {
        lx = i + 1;
        rx = max(rx, suff[a[i]]);
        check();
    }
    lx = mxl;
    for (ll i = n - 1; i > mxr; i--) {
        rx = i - 1;
        lx = min(lx, pref[a[i]]);
        check();
    }
    cout << l << " " << r << '\n';
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...