Submission #560121

#TimeUsernameProblemLanguageResultExecution timeMemory
560121promaNekameleoni (COCI15_nekameleoni)C++17
42 / 140
3082 ms2072 KiB
#include <bits/stdc++.h>

#define int long long
#define see(x) cout<<#x<<"="<<x<<"\n";
#define endl "\n"

using namespace std;

const int N = 2*1e5+5;
const int INF = 1e18;

int n, k, m, a[N];
int used, cnt[55];

int32_t main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
/*
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
*/

    cin >> n >> k >> m;

    for (int i = 1; i <= n; i ++) {
        cin >> a[i];
    }

    while (m --) {
        int t;
        cin >> t;
        if (t == 1) {
            int p, v;
            cin >> p >> v;
            a[p] = v;
        }
        else {
            memset(cnt, 0, sizeof(cnt));
            used = 1;
            cnt[a[1]] = 1;
            int ans = INF;
            for (int l = 1, r = 1; r <= n;) {
                if (used == k) ans = min(ans, r - l + 1);
                r ++;
                cnt[a[r]] ++;
                if (cnt[a[r]] == 1) used ++;
                while (cnt[a[l]] > 1) {
                    cnt[a[l]] --;
                    l ++;
                }
            }
            if (ans == INF) ans = -1;
            cout << ans << endl;
        }
    }

    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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...