# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
994909 |
2024-06-08T08:25:03 Z |
prvocislo |
Fish 3 (JOI24_fish3) |
C++17 |
|
515 ms |
65212 KB |
// He was a moth to the flame
// She was holding the matches
// Soon, she's gonna find stealing other people's toys
// On the playground won't make you many friends
#include <algorithm>
#include <bitset>
#include <cassert>
#include <chrono>
#include <cmath>
#include <deque>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <random>
#include <set>
#include <string>
#include <vector>
typedef long long ll;
typedef long double ld;
using namespace std;
struct sgttree // range add, range sum
{
vector<ll> st, lz;
vector<int> l, r;
void init(int n)
{
int n2 = 1;
while (n2 <= n) n2 <<= 1;
st.assign(n2 * 2, 0), lz.assign(n2 * 2, 0), l.assign(n2 * 2, 0), r.assign(n2 * 2, 0);
for (int i = n2; i < n2 * 2; i++) l[i] = r[i] = i - n2;
for (int i = n2 - 1; i > 0; i--) l[i] = l[i * 2], r[i] = r[i * 2 + 1];
}
void upd(int vr, ll x)
{
st[vr] += ((ll)(r[vr] - l[vr] + 1)) * x, lz[vr] += x;
}
void unlazy(int vr)
{
upd(vr * 2, lz[vr]), upd(vr * 2 + 1, lz[vr]);
lz[vr] = 0;
}
void update(int li, int ri, ll x, int vr = 1)
{
if (ri < l[vr] || r[vr] < li) return;
if (li <= l[vr] && r[vr] <= ri)
return upd(vr, x), void();
unlazy(vr);
update(li, ri, x, vr * 2), update(li, ri, x, vr * 2 + 1);
st[vr] = st[vr * 2] + st[vr * 2 + 1];
}
ll query(int li, int ri, int vr = 1)
{
if (ri < l[vr] || r[vr] < li) return 0;
if (li <= l[vr] && r[vr] <= ri) return st[vr];
unlazy(vr);
return query(li, ri, vr * 2) + query(li, ri, vr * 2 + 1);
}
};
struct block // lx az rx, na poziciach li az ri
{
int li, ri;
ll lx, rx;
};
struct query
{
int l, r, i;
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n, q; ll d;
cin >> n >> d;
vector<ll> c(n);
for (int i = 0; i < n; i++) cin >> c[i];
cin >> q;
vector<ll> ans(q);
vector<vector<query> > qu(n);
for (int i = 0; i < q; i++)
{
query qi;
cin >> qi.l >> qi.r, qi.l--, qi.r--, qi.i = i;
qu[qi.r].push_back(qi);
}
sgttree st; st.init(n);
vector<block> s;
for (int i = 0; i < n; i++)
{
block nw;
nw.li = nw.ri = i, nw.lx = nw.rx = c[i];
while (s.size() && s.back().rx > nw.lx)
{
block b = s.back();
ll sub = (b.rx - nw.lx + d - 1) / d;
s.pop_back();
st.update(b.li, b.ri, sub);
nw.li = b.li, nw.lx = b.lx - sub * d;
}
s.push_back(nw);
for (query qi : qu[i])
{
ll lf = c[qi.l] - st.query(qi.l, qi.l) * d;
if (lf < 0) ans[qi.i] = -1;
else ans[qi.i] = st.query(qi.l, qi.r);
}
}
for (int i = 0; i < q; i++) cout << ans[i] << "\n";
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
3 ms |
860 KB |
Output is correct |
5 |
Correct |
2 ms |
860 KB |
Output is correct |
6 |
Correct |
2 ms |
604 KB |
Output is correct |
7 |
Correct |
2 ms |
604 KB |
Output is correct |
8 |
Correct |
2 ms |
684 KB |
Output is correct |
9 |
Correct |
2 ms |
860 KB |
Output is correct |
10 |
Correct |
3 ms |
860 KB |
Output is correct |
11 |
Correct |
2 ms |
860 KB |
Output is correct |
12 |
Correct |
3 ms |
980 KB |
Output is correct |
13 |
Correct |
3 ms |
860 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
419 ms |
55128 KB |
Output is correct |
2 |
Correct |
364 ms |
55232 KB |
Output is correct |
3 |
Correct |
86 ms |
12368 KB |
Output is correct |
4 |
Correct |
300 ms |
48664 KB |
Output is correct |
5 |
Correct |
296 ms |
48580 KB |
Output is correct |
6 |
Correct |
315 ms |
53948 KB |
Output is correct |
7 |
Correct |
311 ms |
55900 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
139 ms |
16312 KB |
Output is correct |
2 |
Correct |
428 ms |
56172 KB |
Output is correct |
3 |
Correct |
490 ms |
56180 KB |
Output is correct |
4 |
Correct |
407 ms |
56296 KB |
Output is correct |
5 |
Correct |
428 ms |
56284 KB |
Output is correct |
6 |
Correct |
394 ms |
50636 KB |
Output is correct |
7 |
Correct |
392 ms |
50596 KB |
Output is correct |
8 |
Correct |
437 ms |
53852 KB |
Output is correct |
9 |
Correct |
422 ms |
53704 KB |
Output is correct |
10 |
Correct |
353 ms |
64692 KB |
Output is correct |
11 |
Correct |
337 ms |
65212 KB |
Output is correct |
12 |
Correct |
385 ms |
57692 KB |
Output is correct |
13 |
Correct |
387 ms |
57544 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
402 ms |
36028 KB |
Output is correct |
2 |
Correct |
409 ms |
50300 KB |
Output is correct |
3 |
Correct |
274 ms |
23060 KB |
Output is correct |
4 |
Correct |
432 ms |
53548 KB |
Output is correct |
5 |
Correct |
465 ms |
54612 KB |
Output is correct |
6 |
Correct |
515 ms |
56160 KB |
Output is correct |
7 |
Correct |
379 ms |
40528 KB |
Output is correct |
8 |
Correct |
445 ms |
56288 KB |
Output is correct |
9 |
Correct |
332 ms |
49612 KB |
Output is correct |
10 |
Correct |
308 ms |
49288 KB |
Output is correct |
11 |
Correct |
379 ms |
53468 KB |
Output is correct |
12 |
Correct |
342 ms |
52736 KB |
Output is correct |
13 |
Correct |
401 ms |
55832 KB |
Output is correct |
14 |
Correct |
300 ms |
51708 KB |
Output is correct |
15 |
Correct |
401 ms |
55896 KB |
Output is correct |
16 |
Correct |
314 ms |
51816 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
3 ms |
860 KB |
Output is correct |
5 |
Correct |
2 ms |
860 KB |
Output is correct |
6 |
Correct |
2 ms |
604 KB |
Output is correct |
7 |
Correct |
2 ms |
604 KB |
Output is correct |
8 |
Correct |
2 ms |
684 KB |
Output is correct |
9 |
Correct |
2 ms |
860 KB |
Output is correct |
10 |
Correct |
3 ms |
860 KB |
Output is correct |
11 |
Correct |
2 ms |
860 KB |
Output is correct |
12 |
Correct |
3 ms |
980 KB |
Output is correct |
13 |
Correct |
3 ms |
860 KB |
Output is correct |
14 |
Correct |
419 ms |
55128 KB |
Output is correct |
15 |
Correct |
364 ms |
55232 KB |
Output is correct |
16 |
Correct |
86 ms |
12368 KB |
Output is correct |
17 |
Correct |
300 ms |
48664 KB |
Output is correct |
18 |
Correct |
296 ms |
48580 KB |
Output is correct |
19 |
Correct |
315 ms |
53948 KB |
Output is correct |
20 |
Correct |
311 ms |
55900 KB |
Output is correct |
21 |
Correct |
139 ms |
16312 KB |
Output is correct |
22 |
Correct |
428 ms |
56172 KB |
Output is correct |
23 |
Correct |
490 ms |
56180 KB |
Output is correct |
24 |
Correct |
407 ms |
56296 KB |
Output is correct |
25 |
Correct |
428 ms |
56284 KB |
Output is correct |
26 |
Correct |
394 ms |
50636 KB |
Output is correct |
27 |
Correct |
392 ms |
50596 KB |
Output is correct |
28 |
Correct |
437 ms |
53852 KB |
Output is correct |
29 |
Correct |
422 ms |
53704 KB |
Output is correct |
30 |
Correct |
353 ms |
64692 KB |
Output is correct |
31 |
Correct |
337 ms |
65212 KB |
Output is correct |
32 |
Correct |
385 ms |
57692 KB |
Output is correct |
33 |
Correct |
387 ms |
57544 KB |
Output is correct |
34 |
Correct |
402 ms |
36028 KB |
Output is correct |
35 |
Correct |
409 ms |
50300 KB |
Output is correct |
36 |
Correct |
274 ms |
23060 KB |
Output is correct |
37 |
Correct |
432 ms |
53548 KB |
Output is correct |
38 |
Correct |
465 ms |
54612 KB |
Output is correct |
39 |
Correct |
515 ms |
56160 KB |
Output is correct |
40 |
Correct |
379 ms |
40528 KB |
Output is correct |
41 |
Correct |
445 ms |
56288 KB |
Output is correct |
42 |
Correct |
332 ms |
49612 KB |
Output is correct |
43 |
Correct |
308 ms |
49288 KB |
Output is correct |
44 |
Correct |
379 ms |
53468 KB |
Output is correct |
45 |
Correct |
342 ms |
52736 KB |
Output is correct |
46 |
Correct |
401 ms |
55832 KB |
Output is correct |
47 |
Correct |
300 ms |
51708 KB |
Output is correct |
48 |
Correct |
401 ms |
55896 KB |
Output is correct |
49 |
Correct |
314 ms |
51816 KB |
Output is correct |
50 |
Correct |
437 ms |
56152 KB |
Output is correct |
51 |
Correct |
416 ms |
50504 KB |
Output is correct |
52 |
Correct |
390 ms |
53860 KB |
Output is correct |
53 |
Correct |
356 ms |
64828 KB |
Output is correct |
54 |
Correct |
386 ms |
57768 KB |
Output is correct |
55 |
Correct |
421 ms |
56148 KB |
Output is correct |
56 |
Correct |
296 ms |
51940 KB |
Output is correct |
57 |
Correct |
274 ms |
48568 KB |
Output is correct |
58 |
Correct |
299 ms |
48624 KB |
Output is correct |
59 |
Correct |
391 ms |
53988 KB |
Output is correct |
60 |
Correct |
307 ms |
51828 KB |
Output is correct |
61 |
Correct |
385 ms |
64956 KB |
Output is correct |
62 |
Correct |
340 ms |
64192 KB |
Output is correct |
63 |
Correct |
391 ms |
57420 KB |
Output is correct |
64 |
Correct |
267 ms |
51796 KB |
Output is correct |