Submission #1259574

#TimeUsernameProblemLanguageResultExecution timeMemory
1259574son2008Sterilizing Spray (JOI15_sterilizing)C++20
100 / 100
121 ms3656 KiB
#include <bits/stdc++.h> using namespace std; #define ii pair<int, int> #define fi first #define se second #define int long long #define ll long long #define ld double #define mp make_pair #define lg2 30 #define iii pair<int, ii> #define iiii pair<ii, ii> #define base 29 #define eps 1e-8 #define MASK(i) (1LL << (i)) #define BIT(S, i) (((S) >> (i)) & 1) int dx[] = {0LL, 0LL, 1, -1, 1, 1, -1, -1}; int dy[] = {1, -1, 0LL, 0LL, 1, -1, 1, -1}; const int maxn = 4e5 + 5; const int mod = 1e9 + 7; int tree[maxn << 2], a[maxn], n, q, k; void build(int id, int l, int r) { if (l == r) { tree[id] = a[l]; return; } int mid = (l + r) >> 1; build(id << 1, l, mid); build(id << 1 | 1, mid + 1, r); tree[id] = tree[id << 1] + tree[id << 1 | 1]; } void up(int id, int l, int r, int i, int x) { if (l == r) { tree[id] = x; return; } int mid = (l + r) >> 1; if (i <= mid) up(id << 1, l, mid, i, x); else up(id << 1 | 1, mid + 1, r, i, x); tree[id] = tree[id << 1] + tree[id << 1 | 1]; } void update(int id, int l, int r, int u, int v) { if (k == 1) return; if (u > r || v < l || tree[id] == 0) return; if (l == r) { tree[id] /= k; return; } int mid = (l + r) >> 1; update(id << 1, l, mid, u, v); update(id << 1 | 1, mid + 1, r, u, v); tree[id] = tree[id << 1] + tree[id << 1 | 1]; } int get(int id, int l, int r, int u, int v) { if (u > r || v < l) return 0; if (u <= l && v >= r) return tree[id]; int mid = (l + r) >> 1; return get(id << 1, l, mid, u, v) + get(id << 1 | 1, mid + 1, r, u, v); } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define task "task" if (fopen(task ".inp", "r")) { freopen(task ".inp", "r", stdin); freopen(task ".out", "w", stdout); } cin >> n >> q >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; } build(1, 1, n); while (q--) { int t; cin >> t; if (t == 1) { int u, x; cin >> u >> x; up(1, 1, n, u, x); } else if (t == 2) { int l, r; cin >> l >> r; update(1, 1, n, l, r); } else { int l, r; cin >> l >> r; cout << get(1, 1, n, l, r) << '\n'; } // cout << get(1, 1, n, 3, 3) << '\n'; } cerr << endl << "TIME : " << clock() * 0.001 << "s" << endl; }

Compilation message (stderr)

sterilizing.cpp: In function 'int main()':
sterilizing.cpp:81:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   81 |         freopen(task ".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
sterilizing.cpp:82:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   82 |         freopen(task ".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...