제출 #1182314

#제출 시각아이디문제언어결과실행 시간메모리
1182314ZeroCoolSimple game (IZhO17_game)C++20
100 / 100
35 ms9544 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; #define int long long #define ll long long #define ld long double #define ar array #define all(v) v.begin(), v.end() using namespace std; const int N = 1e6 + 20; const int LOG = 20; const int INF = 1e12; const int MOD = 1e9 + 7; void chmin(int &x,int y){x = min(x, y);}; void chmax(int &x,int y){x = max(x, y);}; void mm(int &x){x = (x % MOD + MOD) % MOD;}; int fwt[N]; void upd(int i,int v){ for(i++;i < N;i += i & -i)fwt[i] += v; } void upd(int a,int b,int v){ if(a > b)swap(a, b); upd(a, v); upd(b + 1, -v); } int qry(int i){ int ans = 0; for(i++;i;i -= i & -i)ans += fwt[i]; return ans; } signed main(){ios_base::sync_with_stdio(false);cin.tie(0); int n, m; cin>>n>>m; int A[n]; for(int i = 0;i < n;i++)cin>>A[i]; for(int i = 0;i + 1 < n;i++)upd(A[i], A[i + 1], 1); while(m--){ int qt; cin>>qt; if(qt == 1){ int i; cin>>i; --i; if(i)upd(A[i - 1], A[i], -1); if(i + 1 < n)upd(A[i], A[i + 1], -1); cin>>A[i]; if(i)upd(A[i - 1], A[i], 1); if(i + 1 < n)upd(A[i], A[i + 1], 1); }else{ int x; cin>>x; cout<<qry(x)<<'\n'; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...