Submission details
Task:Massive Matrices
Sender:Pohjantahti
Submission time:2018-09-13 18:46:55 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.02 sdetails
#4ACCEPTED0.03 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.03 sdetails
#7ACCEPTED0.02 sdetails
#8ACCEPTED0.02 sdetails
#9ACCEPTED0.02 sdetails
#10ACCEPTED0.02 sdetails
#11ACCEPTED0.02 sdetails
#12ACCEPTED0.01 sdetails
#13ACCEPTED0.01 sdetails
#14ACCEPTED0.03 sdetails
#15ACCEPTED0.02 sdetails
#16ACCEPTED0.03 sdetails
#17ACCEPTED0.01 sdetails
#18ACCEPTED0.01 sdetails
#19ACCEPTED0.02 sdetails
#20ACCEPTED0.01 sdetails
#21ACCEPTED0.03 sdetails
#22ACCEPTED0.01 sdetails
#23ACCEPTED0.06 sdetails
#24ACCEPTED0.08 sdetails
#25ACCEPTED0.07 sdetails
#26ACCEPTED0.09 sdetails
#27ACCEPTED0.08 sdetails
#28ACCEPTED0.09 sdetails
#29ACCEPTED0.07 sdetails
#30ACCEPTED0.09 sdetails
#31ACCEPTED0.09 sdetails
#32ACCEPTED0.10 sdetails
#33ACCEPTED0.11 sdetails

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