Submission #37231

#TimeUsernameProblemLanguageResultExecution timeMemory
37231Ulugbek_AbdimanabovSimple game (IZhO17_game)C++14
0 / 100
1000 ms23716 KiB
#include <bits/stdc++.h> typedef long long ll; typedef long double ld; #define vi vector<ll> #define pii pair<int,int> #define pll pair<ll,ll> #define rep(i,a,n) for(ll i=a; i<n; i++) #define per(i,a,n) for(ll i=n-1; i>=a; i--) #define F first #define S second #define maxx(a,b) a=max(a,b) #define minn(a,b) a=min(a,b) #define db(x) cerr << #x << " = " << x << endl #define N 1111111 using namespace std; int a[N],t[4*N]; int n; void build(int v=1, int tl=1, int tr=n) { if(tl==tr)t[v]=a[tl]; else { int tm=(tl+tr)>>1; build(v+v,tl,tm); build(v+v+1,tm+1,tr); t[v]=t[v+v]+t[v+v+1]; } } int sum(int l,int r,int v=1, int tl=1, int tr=N) { if(tl>r||tr<l)return 0; if(tl>=l&&tr<=r)return t[v]; int tm=(tl+tr)>>1; return sum(l,r,v+v,tl,tm)+sum(l,r,v+v+1,tm+1,tr); } void updatem(int l, int r, int tl=1, int tr=N, int v=1) { if(tl>r||tr<l)return; if(tl>=l&&tr<=r){t[v]-=(tr-tl+1); } if(tl==tr)return; int tm=(tl+tr)>>1; updatem(l,r,tl,tm,v+v); updatem(l,r,tm+1,tr,v+v+1); t[v]=t[v+v]+t[v+v+1]; } void updatep(int l, int r, int tl=1, int tr=N, int v=1) { if(tl>r||tr<l)return; if(tl>=l&&tr<=r){t[v]+=(tr-tl+1); } if(tl==tr)return; int tm=(tl+tr)>>1; updatep(l,r,tl,tm,v+v); updatep(l,r,tm+1,tr,v+v+1); t[v]=t[v+v]+t[v+v+1]; } int main() { // ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int m; cin>>n>>m; rep(i,1,n+1)cin>>a[i]; rep(i,1,n) updatep(min(a[i],a[i+1]),max(a[i],a[i+1])); rep(i,0,m) { int j; cin>>j; if(j==2) { int l; cin>>l; cout<<sum(l,l)<<endl; } else { int l,r; cin>>l>>r; updatem(min(a[i],a[i+1]),max(a[i],a[i+1])); a[l]=r; updatep(min(a[i],a[i+1]),max(a[i],a[i+1])); } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...