Task: | Massive Matrices |
Sender: | Pohjantahti |
Submission time: | 2018-09-13 18:46:55 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.01 s | details |
#2 | ACCEPTED | 0.01 s | details |
#3 | ACCEPTED | 0.02 s | details |
#4 | ACCEPTED | 0.03 s | details |
#5 | ACCEPTED | 0.01 s | details |
#6 | ACCEPTED | 0.03 s | details |
#7 | ACCEPTED | 0.02 s | details |
#8 | ACCEPTED | 0.02 s | details |
#9 | ACCEPTED | 0.02 s | details |
#10 | ACCEPTED | 0.02 s | details |
#11 | ACCEPTED | 0.02 s | details |
#12 | ACCEPTED | 0.01 s | details |
#13 | ACCEPTED | 0.01 s | details |
#14 | ACCEPTED | 0.03 s | details |
#15 | ACCEPTED | 0.02 s | details |
#16 | ACCEPTED | 0.03 s | details |
#17 | ACCEPTED | 0.01 s | details |
#18 | ACCEPTED | 0.01 s | details |
#19 | ACCEPTED | 0.02 s | details |
#20 | ACCEPTED | 0.01 s | details |
#21 | ACCEPTED | 0.03 s | details |
#22 | ACCEPTED | 0.01 s | details |
#23 | ACCEPTED | 0.06 s | details |
#24 | ACCEPTED | 0.08 s | details |
#25 | ACCEPTED | 0.07 s | details |
#26 | ACCEPTED | 0.09 s | details |
#27 | ACCEPTED | 0.08 s | details |
#28 | ACCEPTED | 0.09 s | details |
#29 | ACCEPTED | 0.07 s | details |
#30 | ACCEPTED | 0.09 s | details |
#31 | ACCEPTED | 0.09 s | details |
#32 | ACCEPTED | 0.10 s | details |
#33 | ACCEPTED | 0.11 s | details |
Code
#include <iostream> using namespace std; typedef long long ll; const int N = (1<<18); int n; ll at[200005], bt[200005]; ll st[2*N]; ll res = 0; void muuta(int k, ll x) { k += N; st[k] = x; for (k /= 2; k >= 1; k /= 2) { st[k] = max(st[2*k], st[2*k+1]); } } ll rmq(int a, int b) { a += N; b += N; ll cres = -1; while (a <= b) { if (a%2 == 1) { cres = max(cres, st[a++]); } if (b%2 == 0) { cres = max(cres, st[b--]); } a /= 2; b /= 2; } return cres; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; for (int i = 1; i <= n; ++i) { cin >> at[i]; } for (int i = 1; i <= n; ++i) { cin >> bt[i]; muuta(i, bt[i]); } for (int i = 1; i <= n; ++i) { if (at[i] == 0) { continue; } ll cmx = rmq(1, at[i]); res += cmx; } cout << res << "\n"; return 0; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
correct output |
---|
0 |
user output |
---|
0 |
Test 2
Verdict: ACCEPTED
input |
---|
10 10 10 10 10 10 10 10 10 10 10 0 0 0 0 0 0 0 0 0 0 |
correct output |
---|
0 |
user output |
---|
0 |
Test 3
Verdict: ACCEPTED
input |
---|
10 0 0 0 0 0 0 0 0 0 0 10 10 10 10 10 10 10 10 10 10 |
correct output |
---|
0 |
user output |
---|
0 |
Test 4
Verdict: ACCEPTED
input |
---|
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 |
correct output |
---|
100 |
user output |
---|
100 |
Test 5
Verdict: ACCEPTED
input |
---|
10 3 4 4 4 5 5 6 10 10 10 0 0 0 0 0 0 0 0 0 0 |
correct output |
---|
0 |
user output |
---|
0 |
Test 6
Verdict: ACCEPTED
input |
---|
10 0 3 4 5 6 6 7 7 7 7 10 10 10 10 10 10 10 10 10 10 |
correct output |
---|
90 |
user output |
---|
90 |
Test 7
Verdict: ACCEPTED
input |
---|
10 0 0 0 0 0 0 0 0 0 0 0 0 2 3 7 8 9 10 10 10 |
correct output |
---|
0 |
user output |
---|
0 |
Test 8
Verdict: ACCEPTED
input |
---|
10 10 10 10 10 10 10 10 10 10 10 1 4 4 5 5 5 5 7 9 9 |
correct output |
---|
90 |
user output |
---|
90 |
Test 9
Verdict: ACCEPTED
input |
---|
10 1 2 5 5 5 5 6 6 10 10 0 0 3 5 6 7 7 7 7 10 |
correct output |
---|
58 |
user output |
---|
58 |
Test 10
Verdict: ACCEPTED
input |
---|
10 0 0 0 1 1 1 2 4 6 8 0 1 1 1 4 4 4 4 4 5 |
correct output |
---|
10 |
user output |
---|
10 |
Test 11
Verdict: ACCEPTED
input |
---|
10 2 4 4 4 5 5 6 6 8 9 0 0 0 1 1 2 7 7 8 10 |
correct output |
---|
24 |
user output |
---|
24 |
Test 12
Verdict: ACCEPTED
input |
---|
100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 13
Verdict: ACCEPTED
input |
---|
100 100 100 100 100 100 100 100 10... |
correct output |
---|
0 |
user output |
---|
0 |
Test 14
Verdict: ACCEPTED
input |
---|
100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 15
Verdict: ACCEPTED
input |
---|
100 100 100 100 100 100 100 100 10... |
correct output |
---|
10000 |
user output |
---|
10000 |
Test 16
Verdict: ACCEPTED
input |
---|
100 0 0 0 0 4 6 7 8 9 11 12 12 13 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 17
Verdict: ACCEPTED
input |
---|
100 0 0 3 5 6 6 8 8 8 10 14 15 15 ... |
correct output |
---|
9800 |
user output |
---|
9800 |
Test 18
Verdict: ACCEPTED
input |
---|
100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 19
Verdict: ACCEPTED
input |
---|
100 100 100 100 100 100 100 100 10... |
correct output |
---|
9400 |
user output |
---|
9400 |
Test 20
Verdict: ACCEPTED
input |
---|
100 2 3 5 5 7 9 9 11 11 11 11 15 1... |
correct output |
---|
6080 |
user output |
---|
6080 |
Test 21
Verdict: ACCEPTED
input |
---|
100 1 2 2 3 6 6 6 6 8 11 12 12 12 ... |
correct output |
---|
5154 |
user output |
---|
5154 |
Test 22
Verdict: ACCEPTED
input |
---|
100 0 0 3 3 3 4 4 5 6 8 9 9 11 11 ... |
correct output |
---|
4813 |
user output |
---|
4813 |
Test 23
Verdict: ACCEPTED
input |
---|
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 24
Verdict: ACCEPTED
input |
---|
200000 200000 200000 200000 200000 20... |
correct output |
---|
0 |
user output |
---|
0 |
Test 25
Verdict: ACCEPTED
input |
---|
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 26
Verdict: ACCEPTED
input |
---|
200000 200000 200000 200000 200000 20... |
correct output |
---|
40000000000 |
user output |
---|
40000000000 |
Test 27
Verdict: ACCEPTED
input |
---|
200000 0 0 0 0 0 2 2 3 3 4 5 5 7 7 7 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 28
Verdict: ACCEPTED
input |
---|
200000 1 1 6 6 6 8 10 10 10 10 12 12 ... |
correct output |
---|
40000000000 |
user output |
---|
40000000000 |
Test 29
Verdict: ACCEPTED
input |
---|
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 30
Verdict: ACCEPTED
input |
---|
200000 200000 200000 200000 200000 20... |
correct output |
---|
40000000000 |
user output |
---|
40000000000 |
Test 31
Verdict: ACCEPTED
input |
---|
200000 1 1 1 1 4 5 5 5 5 6 7 7 7 8 11... |
correct output |
---|
19983276438 |
user output |
---|
19983276438 |
Test 32
Verdict: ACCEPTED
input |
---|
200000 0 3 3 5 8 9 9 11 11 11 14 14 1... |
correct output |
---|
20009052076 |
user output |
---|
20009052076 |
Test 33
Verdict: ACCEPTED
input |
---|
200000 0 0 0 0 3 4 4 4 4 4 6 6 8 8 10... |
correct output |
---|
19996936012 |
user output |
---|
19996936012 |