Submission #974141

#TimeUsernameProblemLanguageResultExecution timeMemory
974141anastasiskolioDeda (COCI17_deda)C++14
100 / 140
719 ms5816 KiB
#include <bits/stdc++.h> using namespace std; #define MAXN 200000 #define INFTY 1e9 + 1 int n, q, tree[4 * MAXN + 1]; void Build(int lo, int hi, int v) { if (lo == hi) { tree[v] = INFTY; return; } int mid = (lo + hi) / 2; Build(lo, mid, 2 * v); Build(mid + 1, hi, 2 * v + 1); tree[v] = min(tree[2 * v], tree[2 * v + 1]); } void Update(int lo, int hi, int v, int i, int delta) { if (lo == hi) { tree[v] = delta; return; } int mid = (lo + hi) / 2; if (i <= mid) Update(lo, mid, 2 * v, i, delta); else Update(mid + 1, hi, 2 * v + 1, i, delta); tree[v] = min(tree[2 * v], tree[2 * v + 1]); } int Min(int lo, int hi, int v, int l, int r) { if (l <= lo && hi <= r) return tree[v]; if (l > hi || r < lo) return INFTY; int mid = (lo + hi) / 2; int MinL = Min(lo, mid, 2 * v, l, r); int MinR = Min(mid + 1, hi, 2 * v + 1, l, r); return min(MinL, MinR); } void Query(int lo, int hi, int y) { if (lo == hi) { printf("%d\n", Min(1, n, 1, lo, lo) <= y ? lo : -1); return; } int j = (lo + hi) / 2; if (Min(1, n, 1, lo, j) <= y) Query(lo, j, y); else Query(j + 1, hi, y); } int main() { scanf("%d %d", &n, &q); Build(1, n, 1); while (q--) { char task; int a, b; scanf(" %c %d %d", &task, &a, &b); if (task == 'M') Update(1, n, 1, b, --a); else Query(b, n, a); } return 0; }

Compilation message (stderr)

deda.cpp: In function 'int main()':
deda.cpp:55:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   55 |   scanf("%d %d", &n, &q);
      |   ~~~~~^~~~~~~~~~~~~~~~~
deda.cpp:58:31: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   58 |     char task; int a, b; scanf(" %c %d %d", &task, &a, &b);
      |                          ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...