/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 27ms 27.27 MiB
#2 Accepted 23ms 27.285 MiB
#3 Accepted 23ms 27.27 MiB
#4 Accepted 24ms 27.078 MiB
#5 Accepted 23ms 27.496 MiB
#6 Accepted 24ms 27.09 MiB
#7 Accepted 23ms 27.32 MiB
#8 Accepted 23ms 27.109 MiB
#9 Accepted 23ms 27.133 MiB
#10 Accepted 23ms 27.27 MiB
#11 Accepted 23ms 27.219 MiB
#12 Accepted 24ms 27.172 MiB
#13 Accepted 24ms 27.09 MiB
#14 Accepted 23ms 27.238 MiB
#15 Accepted 23ms 27.309 MiB
#16 Accepted 23ms 27.277 MiB
#17 Accepted 24ms 27.27 MiB
#18 Accepted 24ms 27.32 MiB
#19 Accepted 23ms 27.27 MiB
#20 Accepted 23ms 27.27 MiB
#21 Accepted 23ms 27.188 MiB
#22 Accepted 24ms 27.41 MiB
#23 Accepted 23ms 27.246 MiB
#24 Accepted 23ms 27.27 MiB
#25 Accepted 23ms 27.191 MiB
#26 Accepted 23ms 27.203 MiB
#27 Accepted 24ms 27.27 MiB
#28 Accepted 23ms 27.297 MiB
#29 Accepted 24ms 27.195 MiB
#30 Accepted 23ms 27.215 MiB
#31 Accepted 24ms 27.168 MiB
#32 Accepted 24ms 27.211 MiB
#33 Accepted 23ms 27.098 MiB
#34 Accepted 24ms 27.195 MiB
#35 Accepted 23ms 27.27 MiB
#36 Accepted 24ms 27.242 MiB
#37 Accepted 23ms 27.172 MiB
#38 Accepted 23ms 27.23 MiB
#39 Accepted 24ms 27.301 MiB
#40 Accepted 24ms 27.262 MiB
#41 Accepted 24ms 27.199 MiB
#42 Accepted 23ms 27.254 MiB
#43 Accepted 23ms 27.156 MiB
#44 Accepted 23ms 27.148 MiB
#45 Accepted 24ms 27.27 MiB
#46 Accepted 24ms 27.219 MiB
#47 Accepted 23ms 27.09 MiB
#48 Accepted 23ms 27.27 MiB
#49 Accepted 24ms 27.105 MiB
#50 Accepted 25ms 27.113 MiB
#51 Accepted 25ms 27.219 MiB
#52 Accepted 24ms 27.184 MiB
#53 Accepted 23ms 27.18 MiB
#54 Accepted 23ms 27.25 MiB
#55 Accepted 23ms 27.273 MiB
#56 Accepted 23ms 27.086 MiB
#57 Accepted 23ms 27.273 MiB
#58 Accepted 23ms 27.27 MiB
#59 Accepted 24ms 27.27 MiB
#60 Accepted 24ms 27.531 MiB
#61 Accepted 25ms 27.27 MiB
#62 Accepted 24ms 27.27 MiB
#63 Accepted 24ms 27.078 MiB
#64 Accepted 23ms 27.324 MiB
#65 Accepted 23ms 27.27 MiB
#66 Accepted 24ms 27.27 MiB
#67 Accepted 24ms 27.125 MiB
#68 Accepted 24ms 27.199 MiB
#69 Accepted 23ms 27.238 MiB
#70 Accepted 23ms 27.254 MiB
#71 Accepted 24ms 27.27 MiB
#72 Accepted 24ms 27.301 MiB
#73 Accepted 23ms 27.27 MiB
#74 Accepted 23ms 27.262 MiB
#75 Accepted 23ms 27.156 MiB
#76 Accepted 23ms 27.172 MiB
#77 Accepted 24ms 27.121 MiB
#78 Accepted 24ms 27.23 MiB
#79 Accepted 23ms 27.102 MiB
#80 Accepted 23ms 27.141 MiB
#81 Accepted 23ms 27.316 MiB
#82 Accepted 23ms 27.27 MiB
#83 Accepted 23ms 27.098 MiB
#84 Accepted 24ms 27.305 MiB
#85 Accepted 24ms 27.27 MiB
#86 Accepted 24ms 27.086 MiB
#87 Accepted 23ms 27.27 MiB
#88 Accepted 24ms 27.312 MiB
#89 Accepted 23ms 27.27 MiB
#90 Accepted 24ms 27.195 MiB
#91 Accepted 24ms 27.105 MiB
#92 Accepted 30ms 28.062 MiB
#93 Accepted 30ms 28.156 MiB
#94 Accepted 30ms 28.023 MiB
#95 Accepted 29ms 28.18 MiB
#96 Accepted 29ms 28.023 MiB
#97 Accepted 248ms 42.844 MiB
#98 Accepted 247ms 42.77 MiB
#99 Accepted 246ms 42.762 MiB
#100 Accepted 247ms 42.773 MiB

Code

// Author : Kamonasish Roy (Bullet)
// Time : 2025-03-20 01:40:06

#include<bits/stdc++.h>
using namespace std;
const long long M=1e6,MOD=1e9+7;
typedef long long ll;
int Roy[M];
int Thakur[M];
int Parent[M];
int a[M];
vector<int>binarylift[M];
int L[M];
int R[M];
void make_tree(int node,int l,int r,int cnt){
	R[node]=cnt;
	if(l==r){
		Roy[node]=Thakur[node]=a[l];
		L[l]=node;
		return;
	}
	int mid=l+(r-l)/2;
	if(abs(r-l+1)%2==1)mid--;
	int left=2*node;
	int right=2*node+1;
	Parent[left]=node;
	Parent[right]=node;
	int d=cnt+1;
	binarylift[node].push_back(left);
	binarylift[node].push_back(right);
	make_tree(left,l,mid,d);
	make_tree(right,mid+1,r,d);
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t=1;
   // cin>>t;
    while(t--){
      int n,q;
      cin>>n>>q;
      for(int i=1;i<=n;i++)cin>>a[i];
      for(int i=1;i<M;i++)Parent[i]=i;
      make_tree(1,1,n,1);
      for(int i=M-1;i>=1;i--){
      	if(Parent[i]==i)continue;
      	int x=binarylift[Parent[i]][0];
      	int y=binarylift[Parent[i]][1];
      	int move=R[x];
      	if(move % 2==0){
      		Roy[Parent[i]]=max(Roy[x],Roy[y]);
      		Thakur[Parent[i]]=min(Thakur[x],Thakur[y]);
      	}
      	else{
      		Roy[Parent[i]]=min(Roy[x],Roy[y]);
      		Thakur[Parent[i]]=max(Thakur[x],Thakur[y]);
      	}
      }
     while(q--){
     	int id,v,op;
     	cin>>id>>v>>op;
     	int cur=L[id];
     	Roy[cur]=v;
     	Thakur[cur]=v;
     	while(Parent[cur]!=cur){
     		cur=Parent[cur];
     		int x=binarylift[cur][0];
     		int y=binarylift[cur][1];
     		int move=R[x];
     		if(move % 2==0){
     			Roy[cur]=max(Roy[x],Roy[y]);
     			Thakur[cur]=min(Thakur[x],Thakur[y]);
     		}
     		else{
     			Roy[cur]=min(Roy[x],Roy[y]);
     			Thakur[cur]=max(Thakur[x],Thakur[y]);
     		}
     	}
     	if(op==0)cout<<Thakur[1]<<"\n";
     	else cout<<Roy[1]<<"\n";
     }
      
      
    	
    	
    	
    	}
    	
    	   
    return 0;
 
}

Information

Submit By
Type
Submission
Problem
P1169 Thakur vs Roy again
Language
C++17 (G++ 13.2.0)
Submit At
2025-03-20 10:58:36
Judged At
2025-03-20 10:58:36
Judged By
Score
100
Total Time
248ms
Peak Memory
42.844 MiB