Submission #117303

#TimeUsernameProblemLanguageResultExecution timeMemory
117303FutymyCloneDeda (COCI17_deda)C++14
60 / 140
1080 ms3228 KiB
#include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; int n, q; struct SegmentTree { int node[N << 2]; void init (int i, int l, int r) { if (l == r) { node[i] = 1e9; return; } int mid = l + r >> 1; init(i << 1, l, mid); init(i << 1 | 1, mid + 1, r); node[i] = min(node[i << 1], node[i << 1 | 1]); } void update (int i, int l, int r, int pos, int val) { if (l == r) { node[i] = val; return; } int mid = l + r >> 1; if (pos <= mid) update(i << 1, l, mid, pos, val); else update(i << 1 | 1, mid + 1, r, pos, val); } int Find (int i, int l, int r, int a, int b, int val) { if (l > r || a > r || b < l) return -1; if (l == r) { if (node[i] <= val) return l; return -1; } if (a <= l && r <= b) { if (node[i] <= val) return l; } int mid = l + r >> 1; int res = Find(i << 1, l, mid, a, b, val); if (res != -1) return res; return Find(i << 1 | 1, mid + 1, r, a, b, val); } } it; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> q; it.init(1, 1, n); for (int i = 1; i <= q; i++) { char c; cin >> c; if (c == 'M') { int x, a; cin >> x >> a; it.update(1, 1, n, a, x); } else { int y, b; cin >> y >> b; cout << it.Find(1, 1, n, b, n, y) << "\n"; } } return 0; }

Compilation message (stderr)

deda.cpp: In member function 'void SegmentTree::init(int, int, int)':
deda.cpp:17:21: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
         int mid = l + r >> 1;
                   ~~^~~
deda.cpp: In member function 'void SegmentTree::update(int, int, int, int, int)':
deda.cpp:29:21: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
         int mid = l + r >> 1;
                   ~~^~~
deda.cpp: In member function 'int SegmentTree::Find(int, int, int, int, int, int)':
deda.cpp:45:21: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
         int mid = l + r >> 1;
                   ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...