/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 512.0 KiB
#2 Accepted 1ms 332.0 KiB
#3 Accepted 1ms 540.0 KiB
#4 Accepted 1ms 560.0 KiB
#5 Accepted 1ms 540.0 KiB
#6 Accepted 1ms 540.0 KiB
#7 Accepted 1ms 584.0 KiB
#8 Accepted 1ms 556.0 KiB
#9 Accepted 1ms 540.0 KiB
#10 Accepted 1ms 540.0 KiB
#11 Accepted 1ms 540.0 KiB
#12 Accepted 1ms 540.0 KiB
#13 Accepted 1ms 540.0 KiB
#14 Accepted 1ms 768.0 KiB
#15 Accepted 1ms 540.0 KiB
#16 Accepted 1ms 588.0 KiB
#17 Accepted 1ms 540.0 KiB
#18 Accepted 1ms 588.0 KiB
#19 Accepted 1ms 540.0 KiB
#20 Accepted 1ms 512.0 KiB
#21 Accepted 1ms 540.0 KiB
#22 Accepted 1ms 540.0 KiB
#23 Accepted 1ms 540.0 KiB
#24 Accepted 1ms 540.0 KiB
#25 Accepted 1ms 540.0 KiB
#26 Accepted 1ms 772.0 KiB
#27 Accepted 1ms 540.0 KiB
#28 Accepted 1ms 540.0 KiB
#29 Accepted 1ms 540.0 KiB
#30 Accepted 1ms 584.0 KiB
#31 Accepted 1ms 540.0 KiB
#32 Accepted 1ms 540.0 KiB
#33 Accepted 1ms 328.0 KiB
#34 Accepted 1ms 540.0 KiB
#35 Accepted 1ms 540.0 KiB
#36 Accepted 1ms 540.0 KiB
#37 Accepted 1ms 540.0 KiB
#38 Accepted 1ms 768.0 KiB
#39 Accepted 1ms 540.0 KiB
#40 Accepted 1ms 540.0 KiB
#41 Accepted 1ms 540.0 KiB
#42 Accepted 1ms 516.0 KiB
#43 Accepted 1ms 540.0 KiB
#44 Accepted 1ms 332.0 KiB
#45 Accepted 1ms 540.0 KiB
#46 Accepted 1ms 540.0 KiB
#47 Accepted 1ms 540.0 KiB
#48 Accepted 1ms 540.0 KiB
#49 Accepted 1ms 540.0 KiB
#50 Accepted 1ms 540.0 KiB
#51 Accepted 1ms 540.0 KiB
#52 Accepted 1ms 540.0 KiB
#53 Accepted 1ms 540.0 KiB
#54 Accepted 1ms 540.0 KiB
#55 Accepted 1ms 540.0 KiB
#56 Accepted 1ms 540.0 KiB
#57 Accepted 1ms 540.0 KiB
#58 Accepted 1ms 540.0 KiB
#59 Accepted 1ms 540.0 KiB
#60 Accepted 1ms 540.0 KiB
#61 Accepted 1ms 540.0 KiB
#62 Accepted 1ms 540.0 KiB
#63 Accepted 1ms 540.0 KiB
#64 Accepted 1ms 540.0 KiB
#65 Accepted 1ms 540.0 KiB
#66 Accepted 1ms 540.0 KiB
#67 Accepted 1ms 540.0 KiB
#68 Accepted 1ms 540.0 KiB
#69 Accepted 1ms 540.0 KiB
#70 Accepted 1ms 540.0 KiB
#71 Accepted 1ms 556.0 KiB
#72 Accepted 1ms 540.0 KiB
#73 Accepted 1ms 560.0 KiB
#74 Accepted 1ms 372.0 KiB
#75 Accepted 1ms 540.0 KiB
#76 Accepted 1ms 540.0 KiB
#77 Accepted 1ms 336.0 KiB
#78 Accepted 1ms 540.0 KiB
#79 Accepted 1ms 540.0 KiB
#80 Accepted 1ms 772.0 KiB
#81 Accepted 1ms 768.0 KiB
#82 Wrong Answer 1ms 540.0 KiB
#83 Wrong Answer 1ms 540.0 KiB

Code

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
//#include <queue>
//#include <numeric>
#include <cassert>

using namespace std;

#ifdef LOCAL_DEBUG
#include <local_debug.h>
#define DEBUG(...) DBG2::cprint(#__VA_ARGS__, __LINE__, __VA_ARGS__)
#else
#define DEBUG(...)
#endif

#define SZ(a) int((a).size())
#define REP(i,n) for(int i=0,_n=(n);i<_n;++i)
#define FOR(i,a,b) for(int i=(a),_b=(b);i<=_b;++i)

using llong = long long;
using VI = vector<int>;
using VVI = vector<VI>;
using II = pair<int,int>;

class SegmentTree {
   struct Node {
      int min_val, max_val;
      Node(int x = 0) : min_val(x), max_val(x) {
      }
      Node operator+(Node& r) const {
         Node ret;
         ret.min_val = min( this->max_val, r.max_val );
         ret.max_val = max( this->min_val, r.min_val );
         return ret;
      }
   };

   int N;
   vector<Node> tree;

   void _build(const vector<int>& A, int node, int L, int R) {
      if (L == R) {
         tree[node] = Node(A[L]);
         return;
      }

      _build(A, 2*node, L, (L+R)/2);
      _build(A, 2*node+1, (L+R)/2+1, R);

      tree[node] = tree[2*node] + tree[2*node+1];
   }
   void _update(int idx, int val, int node, int L, int R) {
      if (idx < L || idx > R)
         return;
      
      if (L == R) {
         tree[node] = Node(val);
         return;
      }

      _update(idx, val, 2*node, L, (L+R)/2);
      _update(idx, val, 2*node+1, (L+R)/2+1, R);

      tree[node] = tree[2*node] + tree[2*node+1];
   }

public:
   SegmentTree(const vector<int>& A) {
      N = A.size();
      int NUM_NODES = 4*N+1;
      tree = vector<Node>(NUM_NODES);
      _build(A, 1, 0, N-1);
   }

   void update(int idx, int val) {
      _update(idx, val, 1, 0, N-1);
   }

   int query(int p) {
      return p == 0 ? tree[1].min_val : tree[1].max_val;
   }

};


int main(int argc, char* argv[]) {
   ios_base::sync_with_stdio(false); 
   cin.tie(nullptr);

   int N, Q;
   cin >> N >> Q;
   VI A(N);
   REP(i, N)
      cin >> A[i];

   SegmentTree st(A);
   FOR(q, 1, Q) {
      int i, v, p;
      cin >> i >> v >> p;
      --i;
      st.update(i, v);
      int res = st.query(p);
      cout << res << '\n';
   }

   return 0;
}

Information

Submit By
Type
Submission
Problem
P1169 Thakur vs Roy again
Contest
Brain Booster #9
Language
C++17 (G++ 13.2.0)
Submit At
2025-04-06 16:39:01
Judged At
2025-04-06 16:39:01
Judged By
Score
81
Total Time
1ms
Peak Memory
772.0 KiB