/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 298ms 382.762 MiB
#2 Accepted 294ms 382.559 MiB
#3 Accepted 292ms 382.734 MiB
#4 Accepted 294ms 382.598 MiB
#5 Accepted 290ms 382.645 MiB
#6 Accepted 294ms 382.578 MiB
#7 Accepted 291ms 382.629 MiB
#8 Accepted 290ms 382.523 MiB
#9 Accepted 290ms 382.66 MiB
#10 Accepted 293ms 382.566 MiB
#11 Accepted 289ms 382.738 MiB
#12 Accepted 291ms 382.703 MiB
#13 Accepted 290ms 382.758 MiB
#14 Accepted 290ms 382.562 MiB
#15 Accepted 287ms 382.609 MiB
#16 Accepted 291ms 382.699 MiB
#17 Accepted 291ms 382.543 MiB
#18 Accepted 289ms 382.75 MiB
#19 Accepted 292ms 382.613 MiB
#20 Accepted 294ms 382.617 MiB
#21 Accepted 293ms 382.535 MiB
#22 Accepted 287ms 382.676 MiB
#23 Accepted 289ms 382.535 MiB
#24 Accepted 291ms 382.77 MiB
#25 Accepted 289ms 382.688 MiB
#26 Accepted 289ms 382.762 MiB
#27 Accepted 289ms 382.609 MiB
#28 Accepted 290ms 382.68 MiB
#29 Accepted 289ms 382.75 MiB
#30 Accepted 291ms 382.66 MiB
#31 Accepted 291ms 382.758 MiB
#32 Accepted 292ms 382.645 MiB
#33 Accepted 290ms 382.547 MiB
#34 Accepted 291ms 382.559 MiB
#35 Accepted 289ms 382.762 MiB
#36 Accepted 291ms 382.645 MiB
#37 Accepted 291ms 382.531 MiB
#38 Accepted 289ms 382.629 MiB
#39 Accepted 289ms 382.77 MiB
#40 Accepted 291ms 382.68 MiB
#41 Accepted 288ms 382.73 MiB
#42 Accepted 293ms 382.742 MiB
#43 Accepted 290ms 382.652 MiB
#44 Accepted 290ms 382.758 MiB
#45 Accepted 291ms 382.77 MiB
#46 Accepted 292ms 382.574 MiB
#47 Accepted 290ms 382.621 MiB
#48 Accepted 286ms 382.738 MiB
#49 Accepted 293ms 382.57 MiB
#50 Accepted 291ms 382.734 MiB
#51 Accepted 289ms 382.672 MiB
#52 Accepted 290ms 382.711 MiB
#53 Accepted 290ms 382.758 MiB
#54 Accepted 291ms 382.562 MiB
#55 Accepted 289ms 382.664 MiB
#56 Accepted 289ms 382.703 MiB
#57 Accepted 291ms 382.574 MiB
#58 Accepted 289ms 382.762 MiB
#59 Accepted 293ms 382.668 MiB
#60 Accepted 291ms 382.555 MiB
#61 Accepted 289ms 382.652 MiB
#62 Accepted 288ms 382.566 MiB
#63 Accepted 293ms 382.68 MiB
#64 Accepted 290ms 382.535 MiB
#65 Accepted 292ms 382.59 MiB
#66 Accepted 293ms 382.691 MiB
#67 Accepted 288ms 382.594 MiB
#68 Accepted 293ms 382.77 MiB
#69 Accepted 292ms 382.742 MiB
#70 Accepted 290ms 382.738 MiB
#71 Accepted 285ms 382.738 MiB
#72 Accepted 309ms 382.598 MiB
#73 Accepted 289ms 382.691 MiB
#74 Accepted 290ms 382.668 MiB
#75 Accepted 293ms 382.691 MiB
#76 Accepted 287ms 382.547 MiB
#77 Accepted 291ms 382.719 MiB
#78 Accepted 294ms 382.586 MiB
#79 Accepted 290ms 382.734 MiB
#80 Accepted 289ms 382.73 MiB
#81 Accepted 292ms 382.707 MiB
#82 Accepted 291ms 382.617 MiB
#83 Accepted 292ms 382.598 MiB
#84 Wrong Answer 291ms 382.77 MiB
#85 Accepted 293ms 382.637 MiB
#86 Accepted 289ms 382.723 MiB
#87 Accepted 291ms 382.598 MiB
#88 Accepted 288ms 382.734 MiB
#89 Wrong Answer 291ms 382.711 MiB

Code

#include <bits/stdc++.h>

// #ifndef ONLINE_JUDGE
// #include "template.cpp"
// #else
// #define debug(...)
// #define debugArr(...)
// #endif

#define F first
#define S second
#define int long long
#define double long double
#define eb emplace_back
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define sz(x) (int)x.size()
#define mp(x, y) make_pair(x, y)
#define lb lower_bound
#define ub upper_bound
#define ins insert
#define INF (int)1e18
using namespace std;

using pii = pair<int, int>;
using pdd = pair<double, double>;
using pbb = pair<bool, bool>;
using pcc = pair<char, char>;
using pss = pair<string, string>;
using vi = vector<int>;
using vd = vector<double>;
using vb = vector<bool>;
using vc = vector<char>;
using vs = vector<string>;
using vpii = vector<pair<int, int>>;
using vpdd = vector<pair<double, double>>;
using vpbb = vector<pair<bool, bool>>;
using vpcc = vector<pair<char, char>>;
using vpss = vector<pair<string, string>>;
using vvi = vector<vector<int>>;
using vvd = vector<vector<double>>;
using vvb = vector<vector<bool>>;
using vvc = vector<vector<char>>;
using vvs = vector<vector<string>>;
using vvpii = vector<vector<pair<int, int>>>;
using vvpdd = vector<vector<pair<double, double>>>;
using vvpbb = vector<vector<pair<bool, bool>>>;
using vvpcc = vector<vector<pair<char, char>>>;
using vvpss = vector<vector<pair<string, string>>>;

// clang-format off
template <class T> using pq = priority_queue<T>;
template <class T> using pqg = priority_queue<T, vector<T>, greater<T>>;
template <class T> T sqrt_(T elem) {int l=1,r=elem;while(l<=r){int mid=l+(r-l)/2LL;if(mid>elem/mid){r=mid-1;}else{int val=mid*mid;if(val<=elem){l=mid+1;}else{r=mid-1;}}}return r;}
template <class T> T ceil_(T a,T b) {return(a+b-1)/b;};
template <class T> T mod_add(T a,T b,T mod){return((a%mod)+(b%mod))% mod;}
template <class T> T mod_sub(T a,T b,T mod){return((a%mod)-(b%mod)+mod)%mod;}
template <class T> T mod_mul(T a,T b,T mod){return((a%mod)*(b%mod))%mod;}
template <class T> T mod_inv(T a,T mod){T m0=mod,y=0,x=1;if(mod==1)return 0;while(a>1){T q=a/mod;T t=mod;mod=a%mod,a=t;t=y;y=x-q*y;x=t;}if(x<0)x+=m0;return x;}
template <class T> T mod_div(T a,T b,T mod){return mod_mul(a,mod_inv(b,mod),mod);}
// clang-format on
const int m = 10000000;

void solve() {
  int n, k;
  cin >> n >> k;

  vi a(n + 1);

  vector<tuple<int, int, int>> b(k);

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

  for (auto &[x, y, z] : b) {
    cin >> x >> y >> z;
  }

  vpii child(m), dp(m);
  vi par(m), initId(n + 1);

  queue<tuple<int, int, int>> q;
  int cnt = 1;
  q.push({1, n, 1});
  par[1] = -1;

  while (!q.empty()) {
    auto [l, r, id] = q.front();
    q.pop();
    if (r - l <= 0) {
      initId[l] = id;
      continue;
    }

    int l1 = l, r1 = l + (((r - l + 1) / 2) - 1);
    int l2 = r1 + 1, r2 = r;

    child[id] = {cnt + 1, cnt + 2};
    par[cnt + 1] = par[cnt + 2] = id;

    q.push({l1, r1, cnt + 1});
    q.push({l2, r2, cnt + 2});
    cnt += 2;
  }

  queue<int> q2;

  for (int i = 0; i < m; i++) {
    dp[i] = {-INF, INF};
  }

  for (int i = 1; i <= n; i++) {
    dp[initId[i]] = {a[i], a[i]};
    q2.push(initId[i]);
  }

  while (!q2.empty()) {
    int id = q2.front();
    q2.pop();

    if (id == 1) {
      continue;
    }

    dp[par[id]].F = max(dp[par[id]].F, dp[id].S);
    dp[par[id]].S = min(dp[par[id]].S, dp[id].F);

    q2.push(par[id]);
  }

  for (const auto [ind, v, p] : b) {
    a[ind] = v;
    dp[initId[ind]] = {v, v};

    q2.push(initId[ind]);

    while (!q2.empty()) {
      int id = q2.front();
      q2.pop();
      // debug(id, par[id]);

      if (id == 1) {
        continue;
      }

      int c1 = child[par[id]].F, c2 = child[par[id]].S;

      dp[par[id]].F = max(dp[c1].S, dp[c2].S);
      dp[par[id]].S = min(dp[c1].F, dp[c2].F);

      q2.push(par[id]);
    }
    if (p == 0) {
      cout << dp[1].S << '\n';
    } else {
      cout << dp[1].F << '\n';
    }
  }
}

signed main() {

  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

  int tt = 1, count = 1;
  // cin >> tt;
  while (tt--) {
    // cout << "Case #" << count << ": ";
    solve();
    ++count;
  }
  return 0;
}

Information

Submit By
Type
Submission
Problem
P1169 Thakur vs Roy again
Language
C++17 (G++ 13.2.0)
Submit At
2025-04-07 15:21:38
Judged At
2025-04-07 15:21:38
Judged By
Score
87
Total Time
309ms
Peak Memory
382.77 MiB