답안 #555667

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
555667 2022-05-01T10:24:20 Z Mamedov Nekameleoni (COCI15_nekameleoni) C++17
42 / 140
3000 ms 1180 KB
#pragma GCC optimize ("O3")
#include <bits/stdc++.h>
#define pii pair<int, int>
#define piii pair<pii, int>
#define vi vector<int>
#define vvi vector<vi>
#define vpii vector<pii>
#define vvpii vector<vpii>
#define f first
#define s second
#define oo 1000000001
#define eb emplace_back
#define pb push_back
#define mpr make_pair
#define size(v) (int)v.size()
#define ln '\n'
#define ull unsigned long long
#define ll long long
#define all(v) v.begin(), v.end()

using namespace std;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

void solve() {
  int n, k, m;
  cin >> n >> k >> m;
  vector<int>arr(n + 1);
  for (int i = 1; i <= n; ++i) {
    cin >> arr[i];
    --arr[i];
  }
  int type, p, v;
  while (m--) {
    cin >> type;
    if (type == 1) {
      cin >> p >> v;
      --v;
      arr[p] = v;
    } else {
      int ans = oo;
      vector<int>cnt(k, 0);
      int diff = 0;
      int l = 1, r = 1;
      while (l <= n) {
        while (r <= n && diff < k) {
          cnt[arr[r]]++;
          if (cnt[arr[r]] == 1)  {
            ++diff;
          }
          ++r;
        }
        if (diff == k) {
          ans = min(ans, r - l);
        }
        cnt[arr[l]]--;
        if (cnt[arr[l]] == 0) {
          --diff;
        }
        ++l;
      }
      if (ans == oo) ans = -1;
      cout << ans << ln;
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);

  int t = 1;
  //cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 212 KB Output is correct
2 Correct 8 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 212 KB Output is correct
2 Correct 13 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 64 ms 340 KB Output is correct
2 Correct 18 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2068 ms 676 KB Output is correct
2 Execution timed out 3037 ms 1180 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3069 ms 676 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3075 ms 744 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3049 ms 716 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3055 ms 568 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3056 ms 724 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3055 ms 724 KB Time limit exceeded
2 Halted 0 ms 0 KB -