Submission #1351189

#TimeUsernameProblemLanguageResultExecution timeMemory
1351189rieyuwGift Boxes (EGOI25_giftboxes)C++20
100 / 100
42 ms6148 KiB
#include<bits/stdc++.h>

using namespace std;
#define sz(x) (int)(x).size()
 
const int INF = 1e9 + 7;
//const long long INF = 1e18 + 7;
//const int mod = 998244353; 
const int mod = 1e9 + 7;
//const int inv2 = 499122177;
const int mxN = 1e7;

int main()
{
    ios::sync_with_stdio(0); cin.tie(0);
    //freopen("_.in", "r", stdin);
    //freopen("_.out", "w", stdout);

    int t, n; cin >> t >> n;
    vector<int> a(n), r(t);
    for (int i = 0; i < n; ++i)
    {
        cin >> a[i];
        r[a[i]] = max(r[a[i]], i);
    }

    vector<int> cnt(t);
    int ok = 1, k;
    for (int i = n-1; i >= 0; --i)
    {
            ++cnt[a[i]];
            if (cnt[a[i]] > 1) break;
            k = i;
    }
    fill(cnt.begin(), cnt.end(), 0);
    
    int ans = n - k;
    pair<int, int> idx = {0, k-1};

    for (int j = 0, i = 0; i < n; ++i)
    {
        ++cnt[a[i]]; 
        if (cnt[a[i]] > 1) break;
        j = max(j, r[a[i]]);
        int s = n - max(j+1, k), l = max(j+1, k)-1;
        if (ans < i + 1 + s)
        {
            ans = i+1+s;
            idx = {i+1, l};
        }
    }
    //cout << ans << "\n";
    cout << idx.first << " " << idx.second << "\n";
    
   
    return 0;
}
#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...