제출 #1125904

#제출 시각아이디문제언어결과실행 시간메모리
1125904LucaIlieSimple game (IZhO17_game)C++20
0 / 100
3 ms4160 KiB
#include <bits/stdc++.h> using namespace std; struct AIB { int n; vector<int> aib; void init( int _n ) { n = _n; aib.resize( n + 1 ); } void update( int i, int x ) { while ( i <= n ) { aib[i] += x; i += (i & -i); } } int query( int i ) { int s = 0; while ( i > 0 ) { s += aib[i]; i -= (i & -i); } return s; } } aib; const int MAX_N = 1e5; int h[MAX_N]; void update( int i, int j, int s ) { int l = min( h[i], h[j] ), r = max( h[i], h[j] ); if ( l == r ) return; aib.update( l + 1, s ); aib.update( r, -s ); } int main() { int n, q; cin >> n >> q; for ( int i = 1; i <= n; i++ ) cin >> h[i]; aib.init( (int)1e6 + 1 ); for ( int i = 1; i < n; i++ ) update( i, i + 1, 1 ); for ( int i = 0; i < q; i++ ) { int t; cin >> t; if ( t == 1 ) { int p, x; cin >> p >> x; if ( p > 1 ) update( p, p - 1, -1 ); if ( p < n ) update( p, p + 1, -1 ); h[p] = x; if ( p > 1 ) update( p, p - 1, 1 ); if ( p < n ) update( p, p + 1, 1 ); } else { int c; cin >> c; cout << aib.query( c ); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...