Submission #313801

#TimeUsernameProblemLanguageResultExecution timeMemory
313801TricksterSimple game (IZhO17_game)C++14
100 / 100
675 ms19576 KiB
#include <algorithm> #include <string.h> #include <iostream> #include <stdio.h> #include <vector> #include <queue> #include <cmath> #include <set> #include <map> using namespace std; #define N 1000010 #define ff first #define ss second #define ll long long #define pb push_back #define mod 1000000007 #define pii pair <int, int> #define sz(a) int(a.size()) #pragma GCC target ("avx2") #pragma GCC optimization ("O3") #pragma GCC optimization ("unroll-loops") ll bigmod(ll a,ll e) {if(e==0)return 1;ll x=bigmod(a*a%mod,e>>1);return e&1?x*a%mod:x;} int n, q; int v[N]; int T[N*4]; int L[N*4]; void shift(int node, int to, int l, int r) { L[to] += L[node]; T[to] += L[node] * (r-l+1); } void upd(int a, int b, int x, int l, int r, int node) { if(l > b || r < a) return; if(l >= a && r <= b) { T[node] += (r-l+1) * x; L[node] += x; return; } shift(node, node*2, l, (l+r)/2); shift(node, node*2+1, (l+r)/2+1, r); L[node] = 0; upd(a, b, x, l, (l+r)/2, node*2); upd(a, b, x, (l+r)/2+1, r, node*2+1); T[node] = T[node*2] + T[node*2+1]; } int tap(int pos, int l, int r, int node) { if(l == r) return T[node]; shift(node, node*2, l, (l+r)/2); shift(node, node*2+1, (l+r)/2+1, r); L[node] = 0; if(pos <= (l+r)/2) return tap(pos, l, (l+r)/2, node*2); else return tap(pos, (l+r)/2+1, r, node*2+1); } int main() { cin >> n >> q; for(int i = 1; i <= n; i++) cin >> v[i]; for(int i = 1; i < n; i++) upd(min(v[i], v[i+1]), max(v[i+1], v[i]), 1, 1, 1000000, 1); while(q--) { int tp, pos, x; cin >> tp >> pos; if(tp == 1) { cin >> x; if(pos != 1) { int a = v[pos], b = v[pos-1]; upd(min(a, b), max(a, b), -1, 1, 1000000, 1); upd(min(x, b), max(x, b), 1, 1, 1000000, 1); } if(pos != n) { int a = v[pos], b = v[pos+1]; upd(min(a, b), max(a, b), -1, 1, 1000000, 1); upd(min(x, b), max(x, b), 1, 1, 1000000, 1); } v[pos] = x; } else cout << tap(pos, 1, 1000000, 1) << "\n"; } } /* 3 3 1 5 1 2 3 1 1 5 2 3 */

Compilation message (stderr)

game.cpp:22: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
   22 | #pragma GCC optimization ("O3")
      | 
game.cpp:23: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
   23 | #pragma GCC optimization ("unroll-loops")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...