Submission #1359707

#TimeUsernameProblemLanguageResultExecution timeMemory
1359707FZ_LaabidiGift Boxes (EGOI25_giftboxes)C++20
100 / 100
877 ms35760 KiB
#include <bits/stdc++.h>
#define int long long
#define F first
#define S second
using namespace std;
signed main(){
    int t, n; cin >> t >> n;
    vector<int>a(n);
    for(int i=0; i<n; i++)cin >> a[i];
    map<int, pair<int, int>> fir;
    for(int i=0; i<t; i++)fir[i]= make_pair(-1, -1);
    for(int i=0; i<n; i++){
        if(fir[a[i]].first==-1)
            fir[a[i]].first = i;
        fir[a[i]].S = i;
    }
  //  for(auto it: fir)cout << it.F << " " << it.second.F << " "<< it.S.S << '\n';
    int x = 0, r = n+1, v = -1;
    vector<bool> appear(t, false), apir(t, false);
    for(int i = n-1; i>-1; i--){
        v = i;
        if(apir[a[i]])break;
        apir[a[i]]= true;
    }
    r =v;
    for(int i=0; i<n-1; i++){
        if(appear[a[i]])break;
        appear[a[i]]= true;
        v = max(v, fir[a[i]].S);
       // cout << i+1 << " "<< v << endl;
        if(v-i<= r-x+1){
            x = i+1; r = v;
        }
    }
    cout << x << " "<< r << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...