#include <bits/stdc++.h>
using namespace std;
#define int long long
void init (vector<int32_t> &a, vector<pair<int, int>> &b){
vector<int32_t> tmp = a;
for (int i = 0; i < b.size(); ++i)
a[i] = tmp[b[i].second];
return;
}
const int N = 100007;
vector<int> par(N), mn(N), sum(N), sz(N), val(N);
int acs (int u){
return (u == par[u] ? u : par[u] = acs(par[u]));
}
vector<int> calculate_costs (
vector<int32_t> w, vector<int32_t> a,
vector<int32_t> b, vector<int32_t> e
){
int n = a.size(), q = e.size();
vector<int> ans(q); vector<pair<int, int>> d(q), x(n), events;
for (int i = 0; i < n; ++i)
x[i] = {w[i], i};
for (int i = 0; i < q; ++i)
d[i] = {e[i], i};
sort(d.begin(), d.end());
sort(x.begin(), x.end());
init(a, x);
init(b, x);
init(w, x);
int res = 0;
for (int i = 0; i < n; ++i){
res += 1ll * a[i];
par[i] = i;
sz[i] = 1;
sum[i] = b[i];
mn[i] = a[i] - b[i];
val[i] = a[i];
}
for (int i = 0; i < n - 1; ++i)
events.push_back({w[i + 1] - w[i], i});
sort(events.begin(), events.end());
int j = 0;
for (auto [x, y] : d){
while (j < events.size() && events[j].first <= x){
int i = events[j].second;
int u = acs(i);
int v = acs(i + 1);
res -= val[u] + val[v];
if (sz[u] < sz[v])
swap(u, v);
par[v] = u;
sz[u] += sz[v];
mn[u] = min(mn[u], mn[v]);
sum[u] += sum[v];
val[u] = (sz[u] % 2ll ? sum[u] + mn[u] : sum[u]);
res += val[u];
++j;
}
ans[y] = res;
}
return ans;
}
// int32_t main (){
// #define task "test"
// if (fopen(task".inp", "r")){
// freopen(task".inp", "r", stdin);
// freopen(task".out", "w", stdout);
// }
// int n, q; cin >> n >> q;
// vector<int32_t> w(n), a(n), b(n), e(q);
// for (int32_t &x : w) cin >> x;
// for (int32_t &x : a) cin >> x;
// for (int32_t &x : b) cin >> x;
// for (int32_t &x : e) cin >> x;
// vector<int> ans = calculate_costs(w, a, b, e);
// for (int x : ans)
// cout << x << " ";
// }
Compilation message
nile.cpp: In function 'void init(std::vector<int>&, std::vector<std::pair<long long int, long long int> >&)':
nile.cpp:9:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
9 | for (int i = 0; i < b.size(); ++i)
| ~~^~~~~~~~~~
nile.cpp: In function 'std::vector<long long int> calculate_costs(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
nile.cpp:51:12: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
51 | while (j < events.size() && events[j].first <= x){
| ~~^~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
4176 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
4432 KB |
Output is correct |
2 |
Correct |
5 ms |
4432 KB |
Output is correct |
3 |
Correct |
4 ms |
4432 KB |
Output is correct |
4 |
Correct |
4 ms |
4604 KB |
Output is correct |
5 |
Correct |
4 ms |
4432 KB |
Output is correct |
6 |
Correct |
3 ms |
4432 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
29 ms |
11716 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
32 ms |
11728 KB |
Output is correct |
2 |
Correct |
33 ms |
11724 KB |
Output is correct |
3 |
Correct |
40 ms |
11684 KB |
Output is correct |
4 |
Correct |
38 ms |
11720 KB |
Output is correct |
5 |
Correct |
41 ms |
11724 KB |
Output is correct |
6 |
Correct |
44 ms |
11716 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
4432 KB |
Output is correct |
2 |
Correct |
5 ms |
4432 KB |
Output is correct |
3 |
Correct |
4 ms |
4432 KB |
Output is correct |
4 |
Correct |
4 ms |
4604 KB |
Output is correct |
5 |
Correct |
4 ms |
4432 KB |
Output is correct |
6 |
Correct |
3 ms |
4432 KB |
Output is correct |
7 |
Incorrect |
5 ms |
4432 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
4432 KB |
Output is correct |
2 |
Correct |
5 ms |
4432 KB |
Output is correct |
3 |
Correct |
4 ms |
4432 KB |
Output is correct |
4 |
Correct |
4 ms |
4604 KB |
Output is correct |
5 |
Correct |
4 ms |
4432 KB |
Output is correct |
6 |
Correct |
3 ms |
4432 KB |
Output is correct |
7 |
Incorrect |
29 ms |
11716 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
32 ms |
11728 KB |
Output is correct |
2 |
Correct |
33 ms |
11724 KB |
Output is correct |
3 |
Correct |
40 ms |
11684 KB |
Output is correct |
4 |
Correct |
38 ms |
11720 KB |
Output is correct |
5 |
Correct |
41 ms |
11724 KB |
Output is correct |
6 |
Correct |
44 ms |
11716 KB |
Output is correct |
7 |
Correct |
52 ms |
14964 KB |
Output is correct |
8 |
Correct |
55 ms |
14780 KB |
Output is correct |
9 |
Correct |
60 ms |
14784 KB |
Output is correct |
10 |
Correct |
59 ms |
14780 KB |
Output is correct |
11 |
Correct |
64 ms |
14780 KB |
Output is correct |
12 |
Correct |
71 ms |
15000 KB |
Output is correct |
13 |
Correct |
58 ms |
14788 KB |
Output is correct |
14 |
Correct |
57 ms |
14780 KB |
Output is correct |
15 |
Correct |
63 ms |
14780 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
4176 KB |
Output is correct |
2 |
Correct |
4 ms |
4432 KB |
Output is correct |
3 |
Correct |
5 ms |
4432 KB |
Output is correct |
4 |
Correct |
4 ms |
4432 KB |
Output is correct |
5 |
Correct |
4 ms |
4604 KB |
Output is correct |
6 |
Correct |
4 ms |
4432 KB |
Output is correct |
7 |
Correct |
3 ms |
4432 KB |
Output is correct |
8 |
Incorrect |
29 ms |
11716 KB |
Output isn't correct |
9 |
Halted |
0 ms |
0 KB |
- |