Advertisement
Josif_tepe

Untitled

Mar 29th, 2021
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. int main() {
  6.     int n, k, m;
  7.     cin >> n >> k >> m;
  8.     int a[n];
  9.     for(int i = 0; i < n; i++) {
  10.         cin >> a[i];
  11.     }
  12.     for(int i = 0; i < m; i++) {
  13.         int tip;
  14.         cin >> tip;
  15.         if(tip == 1) {
  16.             int p, v;
  17.             cin >> p >> v;
  18.             a[p - 1] = v;
  19.         }
  20.         else {
  21.             vector<int> brojac(k + 1, 0);
  22.             int x = 0;
  23.             int br_tipovi = 0;
  24.             int najmala_podniza = 2e9;
  25.             for(int j = 0; j < n; j++) {
  26.                 if(brojac[a[j]] == 0) {
  27.                     br_tipovi++;
  28.                 }
  29.                 brojac[a[j]]++;
  30.                 if(br_tipovi == k) {
  31.                     while(brojac[a[x]] > 1) {
  32.                         brojac[a[x]]--;
  33.                         x++;
  34.                     }
  35.                     if(najmala_podniza > j - x + 1) {
  36.                         najmala_podniza = j - x + 1;
  37.                     }
  38.                 }
  39.                
  40.             }
  41.             if(najmala_podniza == 2e9) najmala_podniza = -1;
  42.             cout << najmala_podniza << endl;
  43.         }
  44.     }
  45.     return 0;
  46. }
  47.  
  48.  
  49.  
  50.  
  51. /*
  52.  brojac[k]
  53.  brojac[1] = brojac[2] = brojac[3] =  .. = 0
  54.  1 2 |3 2 1| 1
  55.  
  56.  3
  57.  
  58.  **/
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement