Advertisement
Ilinskaya

Untitled

May 16th, 2022
845
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define meow ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  6. #define repeat(i, n) for(int (i)=0; (i)<(n); (i)++)
  7. //#define int long long
  8.  
  9. const int maxK = 20;
  10. const int maxN = 50000;
  11.  
  12. vector<int> p;
  13. vector<array<int, maxK>> dp(maxN);
  14.  
  15. int getDp(int v, int i) {
  16.     if (dp[v][i] != -1) {
  17.         return dp[v][i];
  18.     }
  19.     if (i == 0) {
  20.         return -1;
  21.     }
  22.     int half = getDp(v, i - 1);
  23.     if (half != -1) {
  24.         dp[v][i] = getDp(half, i - 1);
  25.     }
  26.     return dp[v][i];
  27. }
  28.  
  29. int getHeight(int v) {
  30.     int count = 0;
  31.     int kk = 0;
  32.     for (int k = maxK; k >= 0; k--) {
  33.         if (getDp(v, k) != -1) {
  34.             kk = k;
  35.             break;
  36.         }
  37.     }
  38.    
  39. }
  40.  
  41. signed main() {
  42.     meow
  43.     int n;
  44.     cin >> n;
  45.     p.resize(n);
  46.     int q;
  47.     repeat(i, n) {
  48.         cin >> q;
  49.         if (q == 0) {
  50.             p[i] = -1;
  51.         } else {
  52.             p[i] = q;
  53.         }
  54.     }
  55.     for (int k = 1; k < maxK; k++) {
  56.         for (int i = 1; i < n; i++) {
  57.             dp[i][k] = -1;
  58.         }
  59.     }
  60.     for (int i = 1; i < n; i++) {
  61.         dp[i][0] = p[i];
  62.     }
  63.     int k;
  64.     cin >> k;
  65.     int type, x, y, u, v;
  66.     int ans = 0;
  67.     repeat(i, k) {
  68.         cin >> type >> x >> y;
  69.         u = (x - 1 + ans) % n + 1;
  70.         v = (y - 1 + ans) % n + 1;
  71.         if (type == 0) {
  72.  
  73.         } else {
  74.             dp[u][0] = v;
  75.         }
  76.     }
  77. }
Advertisement
RAW Paste Data Copied
Advertisement