Submission #173721

#TimeUsernameProblemLanguageResultExecution timeMemory
173721srvltSimple game (IZhO17_game)C++14
100 / 100
86 ms7036 KiB
//#pragma GCC optimize("Ofast") //#pragma GCC target("avx,avx2,fma") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ordered_set tree <pair <int, int>, null_type, less <pair <int, int> >, rb_tree_tag, tree_order_statistics_node_update> using namespace __gnu_pbds; #define ll long long #define db double #define pb push_back #define ppb pop_back #define fi first #define se second #define mp make_pair #define size(x) (int)(x).size() #define all(x) (x).begin(), (x).end() #define endl "\n" //#define int long long using namespace std; void dout() { cerr << endl; } template <typename Head, typename... Tail> void dout(Head H, Tail... T) { cerr << H << ' '; dout(T...); } //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); typedef pair <int, int> pii; const int N = 1e5 + 3, K = 1e6; int n, m, a[N], fen[K + 3]; void upd(int x, int y) { for (; x <= K; x |= (x + 1)) { fen[x] += y; } } int get(int x) { int res = 0; for (; x >= 0; x = (x & (x + 1)) - 1) { res += fen[x]; } return res; } void add(int l, int r) { if (l > r) { swap(l, r); } r--; if (l > r) { return; } upd(l, 1); upd(r + 1, -1); } void del(int l, int r) { if (l > r) { swap(l, r); } r--; if (l > r) { return; } upd(l, -1); upd(r + 1, 1); } void solve(int tc) { // check for (int i = 0; i < n; j++) cin >> n >> m; int l, r; for (int i = 1; i <= n; i++) { cin >> a[i]; if (i > 1) { l = a[i - 1], r = a[i]; add(l, r); } } int t, pos, val, h; for (int i = 1; i <= m; i++) { cin >> t; if (t == 1) { cin >> pos >> val; if (pos > 1) { l = a[pos - 1], r = a[pos]; del(l, r); l = a[pos - 1], r = val; add(l, r); } if (pos < n) { l = a[pos], r = a[pos + 1]; del(l, r); l = val, r = a[pos + 1]; add(l, r); } a[pos] = val; } else { cin >> h; cout << get(h) << endl; } } } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int tc = 1; // cin >> tc; for (int i = 0; i < tc; i++) { solve(i); // cleanup(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...