Submission #38357

#TimeUsernameProblemLanguageResultExecution timeMemory
38357Just_Solve_The_ProblemSimple game (IZhO17_game)C++11
100 / 100
436 ms71424 KiB
#include <stdio.h> using namespace std; typedef long long ll; const int inf = (int)1e9 + 7; const int N = (int)1e6 + 7; #define fr first #define sc second #define OK puts("OK"); #define eb emplace_back #define mk make_pair #define sz(s) ((int)s.size()) ll a[N]; ll t[4 * N]; ll add[4* N]; void push (int v) { add[(v << 1)] += add[v]; add[(v << 1) + 1] += add[v]; add[v] = 0; } ll get (int v, int l, int r, int pos) { if (l == r) { return add[v]; } else { int m = (l + r) >> 1; push(v); if (pos <= m) { return get((v << 1), l, m, pos); } else { return get((v << 1) + 1, m + 1, r, pos); } } } void up (int v, int l, int r, int tl, int tr, int ad) { if (tl != tr) { push (v); } if (tr < l || tl > r) { return ; } if (l <= tl && tr <= r) { add[v] += ad; } else { int tm = (tl + tr) >> 1; up((v << 1), l, r, tl, tm, ad); up((v << 1) + 1, l, r, tm + 1, tr, ad); } } ll max(ll a, ll b) { return a < b ? b : a; } ll min(ll a, ll b) { return a < b ? a : b; } main () { int n, m; scanf ("%d %d", &n, &m); for (int i = 1; i <= n; i++) { scanf ("%lld", a + i); } for (int i = 2; i <= n; i++) { up(1, min(a[i - 1], a[i]), max(a[i - 1], a[i]), 1, (int)1e6, 1); // printf ("%lld %lld\n", min(a[i - 1], a[i]), max(a[i - 1], a[i])); } while (m--) { int c; scanf ("%d", &c); if (c == 2) { int pos; scanf ("%d", &pos); printf ("%I64d\n", get(1, 1, (int)1e6, pos)); } else { int pos, he; scanf ("%d %d", &pos, &he); if (pos > 1) { up(1, min(a[pos], a[pos - 1]), max(a[pos], a[pos - 1]), 1, (int)1e6, -1); up(1, min(he, a[pos - 1]), max(he, a[pos - 1]), 1, (int)1e6, 1); } if (pos < n) { up(1, min(a[pos], a[pos + 1]), max(a[pos], a[pos + 1]), 1, (int)1e6, -1); up(1, min(he, a[pos + 1]), max(he, a[pos + 1]), 1, (int)1e6, 1); } a[pos] = he; } } }

Compilation message (stderr)

game.cpp:62:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main () {
       ^
game.cpp: In function 'int main()':
game.cpp:76:56: warning: format '%d' expects argument of type 'int', but argument 2 has type 'll {aka long long int}' [-Wformat=]
             printf ("%I64d\n", get(1, 1, (int)1e6, pos));
                                                        ^
game.cpp:63:38: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     int n, m; scanf ("%d %d", &n, &m);
                                      ^
game.cpp:66:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf ("%lld", a + i);
                              ^
game.cpp:73:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         int c; scanf ("%d", &c);
                                ^
game.cpp:75:40: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             int pos; scanf ("%d", &pos);
                                        ^
game.cpp:78:52: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             int pos, he; scanf ("%d %d", &pos, &he);
                                                    ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...