Submission #511077

#TimeUsernameProblemLanguageResultExecution timeMemory
511077amukkalirStreet Lamps (APIO19_street_lamps)C++17
20 / 100
758 ms14660 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define pii pair<int,int> #define fi first #define se second #define pb push_back #define mp make_pair const int nax = 3e5; const int INF = 3*nax; int n, q; int s[nax+5]; int mn[nax+5]; int tree[4*nax+5]; int merge(int a, int b) { return max(a,b); } void build(int idx, int l, int r) { if(l == r) tree[idx] = mn[l]; else { int m = (l+r)/2; build(idx<<1, l, m); build(idx<<1|1, m+1, r); tree[idx] = merge(tree[idx<<1], tree[idx<<1|1]); } } void upd(int idx, int l, int r, int where, int val) { //hrsnya l <= where <= r if(r < where || l > where) { return; } else if(r == l && r == where) tree[idx] = val; else { int m = (l+r)/2; upd(idx<<1, l, m, where, val); upd(idx<<1|1, m+1, r, where, val); tree[idx] = merge(tree[idx<<1], tree[idx<<1|1]); } } int query(int idx, int l, int r, int from, int to) { if(r < from || l > to) return -1; else if(from <= l && r <= to) return tree[idx]; else { int m = (l+r)/2; return merge ( query(idx<<1, l, m, from, to), query(idx<<1|1, m+1, r, from, to) ); } } signed main () { scanf("%d %d", &n, &q); for(int i=1; i<=n; i++) { scanf("%1d", &s[i]); if(s[i]) mn[i] = 0; else mn[i] = INF; } build(1, 1, n); for(int i=1; i<=q; i++) { string type; cin >> type; if(type == "query") { int a, b; scanf("%d %d", &a, &b); //segments between them are a, a+1, a+2, ... b-1 int ans = query(1, 1, n, a, b-1); if(ans > i) ans = 0; else ans = i-ans; printf("%d\n", ans); } else { int x; scanf("%d", &x); s[x] ^= 1; if(s[x]) { //which should be all the case here for subtask 3 mn[x] = i; //segment ini nyala waktu i upd(1, 1, n, x, i); } else { //?? } } } }

Compilation message (stderr)

street_lamps.cpp: In function 'int main()':
street_lamps.cpp:58:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   58 |     scanf("%d %d", &n, &q);
      |     ~~~~~^~~~~~~~~~~~~~~~~
street_lamps.cpp:61:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   61 |         scanf("%1d", &s[i]);
      |         ~~~~~^~~~~~~~~~~~~~
street_lamps.cpp:72:28: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   72 |             int a, b; scanf("%d %d", &a, &b);
      |                       ~~~~~^~~~~~~~~~~~~~~~~
street_lamps.cpp:82:25: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   82 |             int x; scanf("%d", &x);
      |                    ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...