# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
1059115 |
2024-08-14T17:21:56 Z |
Tonyl |
Jobs (BOI24_jobs) |
C++17 |
|
179 ms |
80560 KB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int ll
using vi = vector<int>;
using pi = pair<ll,ll>;
#define REP(i,n) for (int i = 0; i < n; i++)
#define trav(a,x) for (auto& a : x)
#define D(x) //cerr << #x << ": " << x << endl;
#define all(x) (x).begin(), (x).end()
const int MAX_N = 3*1e5+3;
struct Info {
ll off = 0;
map<ll, ll> rew;
void add(int r) {
if (r == 0) return;
if (r > 0) {
rew[-off] += r;
} else {
r*=-1;
ll rr = r;
//off += r;
// go erasing
if (rew.size() == 0) return;
// move
ll stole = 0;
ll bef = 0;
while (rew.size() && stole == 0) {
bef = rew.begin()->first;
stole += rew.begin()->second;
rew.erase(rew.begin());
}
bef += r;
while (rew.size() && rew.begin()->first < bef) {
stole += rew.begin()->second;
rew.erase(rew.begin());
}
if (stole > 0) rew[bef-off] += stole;
else assert(rew.size() == 0);
while (rew.size() && rr) {
if (rew.begin()->second > rr) {
rew.begin()->second -= rr;
rr = 0;
} else {
rr -= rew.begin()->second;
rew.erase(rew.begin());
}
}
}
}
void merge(Info* other) {
trav(o, other->rew) {
ll re = o.first + other->off;
rew[re-off] += o.second;
}
delete other;
}
~Info() {
rew.clear();
}
};
int n; ll s;
vi children[MAX_N];
int values[MAX_N];
bool done[MAX_N];
Info* dfs(int i) {
done[i] = 1;
Info* info = new Info;
trav(ch, children[i]) {
Info* other = dfs(ch);
if (info->rew.size() < other->rew.size()) swap(info, other);
info->merge(other);
}
info->add(values[i]);
return info;
}
ll triv_dfs(int i) {
done[i] = 1;
ll tot = values[i];
trav(ch, children[i]) tot += triv_dfs(ch);
return max(tot, 0ll);
}
signed main() {
ios_base::sync_with_stdio(false); cin.tie(0);
priority_queue<pi, vector<pi>, greater<pi>> q;
cin >> n >> s;
ll ss = s;
REP(i,n) {
int p; cin >> values[i] >> p;
if (p == 0) continue;
p--;
children[p].push_back(i);
}
REP(i,n) {
if (done[i]) continue;
Info* info = dfs(i);
trav(r, info->rew) {
q.push({r.first+info->off, r.second});
}
}
while (q.size()) {
auto r = q.top(); q.pop();
D(r.first);
D(r.second);
if (r.first <= s) s += r.second;
assert(r.second > 0);
//else break;
}
assert(s >= ss);
cout << s - ss << endl;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
161 ms |
29556 KB |
Output is correct |
2 |
Correct |
108 ms |
30184 KB |
Output is correct |
3 |
Correct |
78 ms |
35172 KB |
Output is correct |
4 |
Correct |
90 ms |
40788 KB |
Output is correct |
5 |
Correct |
101 ms |
50628 KB |
Output is correct |
6 |
Correct |
79 ms |
19536 KB |
Output is correct |
7 |
Correct |
135 ms |
31944 KB |
Output is correct |
8 |
Correct |
80 ms |
34240 KB |
Output is correct |
9 |
Correct |
89 ms |
45900 KB |
Output is correct |
10 |
Correct |
95 ms |
51396 KB |
Output is correct |
11 |
Correct |
179 ms |
33088 KB |
Output is correct |
12 |
Correct |
134 ms |
26436 KB |
Output is correct |
13 |
Correct |
151 ms |
25424 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
9816 KB |
Output is correct |
2 |
Correct |
2 ms |
9820 KB |
Output is correct |
3 |
Correct |
1 ms |
9820 KB |
Output is correct |
4 |
Correct |
2 ms |
10076 KB |
Output is correct |
5 |
Correct |
2 ms |
10332 KB |
Output is correct |
6 |
Correct |
2 ms |
10076 KB |
Output is correct |
7 |
Correct |
2 ms |
10076 KB |
Output is correct |
8 |
Correct |
2 ms |
9996 KB |
Output is correct |
9 |
Correct |
2 ms |
10072 KB |
Output is correct |
10 |
Correct |
2 ms |
10076 KB |
Output is correct |
11 |
Correct |
2 ms |
10332 KB |
Output is correct |
12 |
Correct |
2 ms |
10168 KB |
Output is correct |
13 |
Correct |
2 ms |
10076 KB |
Output is correct |
14 |
Correct |
2 ms |
10076 KB |
Output is correct |
15 |
Correct |
2 ms |
10076 KB |
Output is correct |
16 |
Correct |
2 ms |
10076 KB |
Output is correct |
17 |
Correct |
2 ms |
10428 KB |
Output is correct |
18 |
Correct |
2 ms |
10076 KB |
Output is correct |
19 |
Correct |
2 ms |
10076 KB |
Output is correct |
20 |
Correct |
2 ms |
10076 KB |
Output is correct |
21 |
Correct |
2 ms |
10076 KB |
Output is correct |
22 |
Correct |
2 ms |
10076 KB |
Output is correct |
23 |
Correct |
2 ms |
10332 KB |
Output is correct |
24 |
Correct |
2 ms |
10072 KB |
Output is correct |
25 |
Correct |
2 ms |
10076 KB |
Output is correct |
26 |
Correct |
2 ms |
10072 KB |
Output is correct |
27 |
Correct |
2 ms |
10076 KB |
Output is correct |
28 |
Correct |
2 ms |
10076 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
9816 KB |
Output is correct |
2 |
Correct |
2 ms |
9820 KB |
Output is correct |
3 |
Correct |
1 ms |
9820 KB |
Output is correct |
4 |
Correct |
2 ms |
10076 KB |
Output is correct |
5 |
Correct |
2 ms |
10332 KB |
Output is correct |
6 |
Correct |
2 ms |
10076 KB |
Output is correct |
7 |
Correct |
2 ms |
10076 KB |
Output is correct |
8 |
Correct |
2 ms |
9996 KB |
Output is correct |
9 |
Correct |
2 ms |
10072 KB |
Output is correct |
10 |
Correct |
2 ms |
10076 KB |
Output is correct |
11 |
Correct |
2 ms |
10332 KB |
Output is correct |
12 |
Correct |
2 ms |
10168 KB |
Output is correct |
13 |
Correct |
2 ms |
10076 KB |
Output is correct |
14 |
Correct |
2 ms |
10076 KB |
Output is correct |
15 |
Correct |
2 ms |
10076 KB |
Output is correct |
16 |
Correct |
2 ms |
10076 KB |
Output is correct |
17 |
Correct |
2 ms |
10428 KB |
Output is correct |
18 |
Correct |
2 ms |
10076 KB |
Output is correct |
19 |
Correct |
2 ms |
10076 KB |
Output is correct |
20 |
Correct |
2 ms |
10076 KB |
Output is correct |
21 |
Correct |
2 ms |
10076 KB |
Output is correct |
22 |
Correct |
2 ms |
10076 KB |
Output is correct |
23 |
Correct |
2 ms |
10332 KB |
Output is correct |
24 |
Correct |
2 ms |
10072 KB |
Output is correct |
25 |
Correct |
2 ms |
10076 KB |
Output is correct |
26 |
Correct |
2 ms |
10072 KB |
Output is correct |
27 |
Correct |
2 ms |
10076 KB |
Output is correct |
28 |
Correct |
2 ms |
10076 KB |
Output is correct |
29 |
Correct |
72 ms |
35176 KB |
Output is correct |
30 |
Correct |
67 ms |
35524 KB |
Output is correct |
31 |
Correct |
63 ms |
39784 KB |
Output is correct |
32 |
Correct |
111 ms |
78804 KB |
Output is correct |
33 |
Correct |
95 ms |
59044 KB |
Output is correct |
34 |
Correct |
80 ms |
45636 KB |
Output is correct |
35 |
Correct |
63 ms |
20556 KB |
Output is correct |
36 |
Correct |
80 ms |
39012 KB |
Output is correct |
37 |
Correct |
78 ms |
35240 KB |
Output is correct |
38 |
Correct |
91 ms |
80560 KB |
Output is correct |
39 |
Correct |
100 ms |
60788 KB |
Output is correct |
40 |
Correct |
87 ms |
43780 KB |
Output is correct |
41 |
Incorrect |
80 ms |
32580 KB |
Output isn't correct |
42 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
9816 KB |
Output is correct |
2 |
Correct |
2 ms |
9820 KB |
Output is correct |
3 |
Correct |
1 ms |
9820 KB |
Output is correct |
4 |
Correct |
2 ms |
10076 KB |
Output is correct |
5 |
Correct |
2 ms |
10332 KB |
Output is correct |
6 |
Correct |
2 ms |
10076 KB |
Output is correct |
7 |
Correct |
2 ms |
10076 KB |
Output is correct |
8 |
Correct |
2 ms |
9996 KB |
Output is correct |
9 |
Correct |
2 ms |
10072 KB |
Output is correct |
10 |
Correct |
2 ms |
10076 KB |
Output is correct |
11 |
Correct |
2 ms |
10332 KB |
Output is correct |
12 |
Correct |
2 ms |
10168 KB |
Output is correct |
13 |
Correct |
2 ms |
10076 KB |
Output is correct |
14 |
Correct |
2 ms |
10076 KB |
Output is correct |
15 |
Correct |
2 ms |
10076 KB |
Output is correct |
16 |
Correct |
2 ms |
10076 KB |
Output is correct |
17 |
Correct |
2 ms |
10428 KB |
Output is correct |
18 |
Correct |
2 ms |
10076 KB |
Output is correct |
19 |
Correct |
2 ms |
10076 KB |
Output is correct |
20 |
Correct |
2 ms |
10076 KB |
Output is correct |
21 |
Correct |
2 ms |
10076 KB |
Output is correct |
22 |
Correct |
2 ms |
10076 KB |
Output is correct |
23 |
Correct |
2 ms |
10332 KB |
Output is correct |
24 |
Correct |
2 ms |
10072 KB |
Output is correct |
25 |
Correct |
2 ms |
10076 KB |
Output is correct |
26 |
Correct |
2 ms |
10072 KB |
Output is correct |
27 |
Correct |
2 ms |
10076 KB |
Output is correct |
28 |
Correct |
2 ms |
10076 KB |
Output is correct |
29 |
Correct |
2 ms |
10076 KB |
Output is correct |
30 |
Correct |
3 ms |
10076 KB |
Output is correct |
31 |
Correct |
2 ms |
10028 KB |
Output is correct |
32 |
Correct |
2 ms |
10076 KB |
Output is correct |
33 |
Correct |
2 ms |
10072 KB |
Output is correct |
34 |
Correct |
2 ms |
10076 KB |
Output is correct |
35 |
Correct |
2 ms |
10076 KB |
Output is correct |
36 |
Correct |
3 ms |
10076 KB |
Output is correct |
37 |
Correct |
2 ms |
10076 KB |
Output is correct |
38 |
Correct |
2 ms |
10076 KB |
Output is correct |
39 |
Correct |
2 ms |
10076 KB |
Output is correct |
40 |
Correct |
2 ms |
10076 KB |
Output is correct |
41 |
Correct |
2 ms |
10076 KB |
Output is correct |
42 |
Correct |
2 ms |
10072 KB |
Output is correct |
43 |
Correct |
2 ms |
10076 KB |
Output is correct |
44 |
Correct |
2 ms |
10076 KB |
Output is correct |
45 |
Correct |
2 ms |
10028 KB |
Output is correct |
46 |
Correct |
2 ms |
10076 KB |
Output is correct |
47 |
Correct |
2 ms |
10076 KB |
Output is correct |
48 |
Correct |
2 ms |
10076 KB |
Output is correct |
49 |
Correct |
2 ms |
10076 KB |
Output is correct |
50 |
Correct |
2 ms |
10072 KB |
Output is correct |
51 |
Correct |
2 ms |
10076 KB |
Output is correct |
52 |
Correct |
2 ms |
10076 KB |
Output is correct |
53 |
Correct |
2 ms |
10076 KB |
Output is correct |
54 |
Correct |
2 ms |
10076 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
161 ms |
29556 KB |
Output is correct |
2 |
Correct |
108 ms |
30184 KB |
Output is correct |
3 |
Correct |
78 ms |
35172 KB |
Output is correct |
4 |
Correct |
90 ms |
40788 KB |
Output is correct |
5 |
Correct |
101 ms |
50628 KB |
Output is correct |
6 |
Correct |
79 ms |
19536 KB |
Output is correct |
7 |
Correct |
135 ms |
31944 KB |
Output is correct |
8 |
Correct |
80 ms |
34240 KB |
Output is correct |
9 |
Correct |
89 ms |
45900 KB |
Output is correct |
10 |
Correct |
95 ms |
51396 KB |
Output is correct |
11 |
Correct |
179 ms |
33088 KB |
Output is correct |
12 |
Correct |
134 ms |
26436 KB |
Output is correct |
13 |
Correct |
151 ms |
25424 KB |
Output is correct |
14 |
Correct |
2 ms |
9816 KB |
Output is correct |
15 |
Correct |
2 ms |
9820 KB |
Output is correct |
16 |
Correct |
1 ms |
9820 KB |
Output is correct |
17 |
Correct |
2 ms |
10076 KB |
Output is correct |
18 |
Correct |
2 ms |
10332 KB |
Output is correct |
19 |
Correct |
2 ms |
10076 KB |
Output is correct |
20 |
Correct |
2 ms |
10076 KB |
Output is correct |
21 |
Correct |
2 ms |
9996 KB |
Output is correct |
22 |
Correct |
2 ms |
10072 KB |
Output is correct |
23 |
Correct |
2 ms |
10076 KB |
Output is correct |
24 |
Correct |
2 ms |
10332 KB |
Output is correct |
25 |
Correct |
2 ms |
10168 KB |
Output is correct |
26 |
Correct |
2 ms |
10076 KB |
Output is correct |
27 |
Correct |
2 ms |
10076 KB |
Output is correct |
28 |
Correct |
2 ms |
10076 KB |
Output is correct |
29 |
Correct |
2 ms |
10076 KB |
Output is correct |
30 |
Correct |
2 ms |
10428 KB |
Output is correct |
31 |
Correct |
2 ms |
10076 KB |
Output is correct |
32 |
Correct |
2 ms |
10076 KB |
Output is correct |
33 |
Correct |
2 ms |
10076 KB |
Output is correct |
34 |
Correct |
2 ms |
10076 KB |
Output is correct |
35 |
Correct |
2 ms |
10076 KB |
Output is correct |
36 |
Correct |
2 ms |
10332 KB |
Output is correct |
37 |
Correct |
2 ms |
10072 KB |
Output is correct |
38 |
Correct |
2 ms |
10076 KB |
Output is correct |
39 |
Correct |
2 ms |
10072 KB |
Output is correct |
40 |
Correct |
2 ms |
10076 KB |
Output is correct |
41 |
Correct |
2 ms |
10076 KB |
Output is correct |
42 |
Correct |
72 ms |
35176 KB |
Output is correct |
43 |
Correct |
67 ms |
35524 KB |
Output is correct |
44 |
Correct |
63 ms |
39784 KB |
Output is correct |
45 |
Correct |
111 ms |
78804 KB |
Output is correct |
46 |
Correct |
95 ms |
59044 KB |
Output is correct |
47 |
Correct |
80 ms |
45636 KB |
Output is correct |
48 |
Correct |
63 ms |
20556 KB |
Output is correct |
49 |
Correct |
80 ms |
39012 KB |
Output is correct |
50 |
Correct |
78 ms |
35240 KB |
Output is correct |
51 |
Correct |
91 ms |
80560 KB |
Output is correct |
52 |
Correct |
100 ms |
60788 KB |
Output is correct |
53 |
Correct |
87 ms |
43780 KB |
Output is correct |
54 |
Incorrect |
80 ms |
32580 KB |
Output isn't correct |
55 |
Halted |
0 ms |
0 KB |
- |