#include <iostream>
#include <algorithm>
using namespace std;
int n, k, a[200015], b[200015], g[200015], c[200015], x[200015], cnt[200015], BIT[200015], IT[1000015];
int getnum(int x) {
int res = 0;
for (x = upper_bound(c + 1, c + k + 1, x) - c; x <= k; x += x & -x)
res += BIT[x];
return res;
}
void addup(int x) {
for (x = lower_bound(c + 1, c + k + 1, x) - c; x >= 1; x -= x & -x)
++BIT[x];
}
void update(int x, int p, int k, int l, int r) {
if (x < c[l] || c[r] < x) return;
IT[k] = max(IT[k], p);
if (l < r)
update(x, p, 2 * k, l, (l + r) / 2),
update(x, p, 2 * k + 1, (l + r) / 2 + 1, r);
}
int getpos(int a, int b, int k, int l, int r) {
if (b < c[l] || c[r] < a) return 0;
if (a <= c[l] && c[r] <= b) return IT[k];
return max(getpos(a, b, 2 * k, l, (l + r) / 2), getpos(a, b, 2 * k + 1, (l + r) / 2 + 1, r));
}
int main() {
cin >> n >> k;
for (int i = 1; i <= n; ++i) {
cin >> a[i] >> b[i];
if (a[i] > b[i])
swap(a[i], b[i]),
g[i] = 1;
}
for (int i = 1; i <= k; ++i)
cin >> x[i], c[i] = x[i];
sort(c + 1, c + k + 1);
for (int i = k; i >= 1; --i)
cnt[i] = getnum(x[i]), addup(x[i]),
update(x[i], i, 1, 1, k);
long long res = 0;
for (int i = 1; i <= n; ++i) {
int p = getpos(a[i], b[i] - 1, 1, 1, k);
if (p) {
if (cnt[p] & 1) res += 1ll * a[i];
else res += 1ll * b[i];
}
else {
if (getnum(b[i]) & 1) {
if (g[i]) res += 1ll * a[i];
else res += 1ll * b[i];
}
else {
if (g[i]) res += 1ll * b[i];
else res += 1ll * a[i];
}
}
}
cout << res;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
376 KB |
Output is correct |
2 |
Correct |
4 ms |
376 KB |
Output is correct |
3 |
Correct |
5 ms |
504 KB |
Output is correct |
4 |
Correct |
5 ms |
376 KB |
Output is correct |
5 |
Correct |
5 ms |
504 KB |
Output is correct |
6 |
Correct |
5 ms |
376 KB |
Output is correct |
7 |
Correct |
5 ms |
504 KB |
Output is correct |
8 |
Correct |
5 ms |
380 KB |
Output is correct |
9 |
Correct |
4 ms |
376 KB |
Output is correct |
10 |
Correct |
4 ms |
376 KB |
Output is correct |
11 |
Correct |
5 ms |
504 KB |
Output is correct |
12 |
Correct |
5 ms |
504 KB |
Output is correct |
13 |
Correct |
5 ms |
376 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
376 KB |
Output is correct |
2 |
Correct |
4 ms |
376 KB |
Output is correct |
3 |
Correct |
5 ms |
504 KB |
Output is correct |
4 |
Correct |
5 ms |
376 KB |
Output is correct |
5 |
Correct |
5 ms |
504 KB |
Output is correct |
6 |
Correct |
5 ms |
376 KB |
Output is correct |
7 |
Correct |
5 ms |
504 KB |
Output is correct |
8 |
Correct |
5 ms |
380 KB |
Output is correct |
9 |
Correct |
4 ms |
376 KB |
Output is correct |
10 |
Correct |
4 ms |
376 KB |
Output is correct |
11 |
Correct |
5 ms |
504 KB |
Output is correct |
12 |
Correct |
5 ms |
504 KB |
Output is correct |
13 |
Correct |
5 ms |
376 KB |
Output is correct |
14 |
Correct |
32 ms |
1036 KB |
Output is correct |
15 |
Correct |
64 ms |
1716 KB |
Output is correct |
16 |
Correct |
98 ms |
2300 KB |
Output is correct |
17 |
Correct |
129 ms |
3064 KB |
Output is correct |
18 |
Correct |
130 ms |
3064 KB |
Output is correct |
19 |
Correct |
129 ms |
3164 KB |
Output is correct |
20 |
Correct |
129 ms |
3132 KB |
Output is correct |
21 |
Correct |
125 ms |
3192 KB |
Output is correct |
22 |
Correct |
94 ms |
2568 KB |
Output is correct |
23 |
Correct |
94 ms |
2424 KB |
Output is correct |
24 |
Correct |
93 ms |
2552 KB |
Output is correct |
25 |
Correct |
95 ms |
2552 KB |
Output is correct |
26 |
Correct |
114 ms |
2972 KB |
Output is correct |
27 |
Correct |
124 ms |
3064 KB |
Output is correct |
28 |
Correct |
122 ms |
3140 KB |
Output is correct |
29 |
Incorrect |
125 ms |
3132 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
376 KB |
Output is correct |
2 |
Correct |
4 ms |
376 KB |
Output is correct |
3 |
Correct |
5 ms |
504 KB |
Output is correct |
4 |
Correct |
5 ms |
376 KB |
Output is correct |
5 |
Correct |
5 ms |
504 KB |
Output is correct |
6 |
Correct |
5 ms |
376 KB |
Output is correct |
7 |
Correct |
5 ms |
504 KB |
Output is correct |
8 |
Correct |
5 ms |
380 KB |
Output is correct |
9 |
Correct |
4 ms |
376 KB |
Output is correct |
10 |
Correct |
4 ms |
376 KB |
Output is correct |
11 |
Correct |
5 ms |
504 KB |
Output is correct |
12 |
Correct |
5 ms |
504 KB |
Output is correct |
13 |
Correct |
5 ms |
376 KB |
Output is correct |
14 |
Correct |
32 ms |
1036 KB |
Output is correct |
15 |
Correct |
64 ms |
1716 KB |
Output is correct |
16 |
Correct |
98 ms |
2300 KB |
Output is correct |
17 |
Correct |
129 ms |
3064 KB |
Output is correct |
18 |
Correct |
130 ms |
3064 KB |
Output is correct |
19 |
Correct |
129 ms |
3164 KB |
Output is correct |
20 |
Correct |
129 ms |
3132 KB |
Output is correct |
21 |
Correct |
125 ms |
3192 KB |
Output is correct |
22 |
Correct |
94 ms |
2568 KB |
Output is correct |
23 |
Correct |
94 ms |
2424 KB |
Output is correct |
24 |
Correct |
93 ms |
2552 KB |
Output is correct |
25 |
Correct |
95 ms |
2552 KB |
Output is correct |
26 |
Correct |
114 ms |
2972 KB |
Output is correct |
27 |
Correct |
124 ms |
3064 KB |
Output is correct |
28 |
Correct |
122 ms |
3140 KB |
Output is correct |
29 |
Incorrect |
125 ms |
3132 KB |
Output isn't correct |