QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#135725 | #5252. Deforestation | UFRJ# | WA | 21ms | 25460kb | C++20 | 1.9kb | 2023-08-05 23:18:52 | 2023-08-05 23:18:55 |
Judging History
answer
#include "bits/stdc++.h"
using namespace std;
using lint = int64_t;
const int N = 100005;
vector<int> g[N];
lint b[N];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
lint w;
cin>>w;
int n = 1;
auto create = [&](int p, auto &self) -> void {
int v = n++;
g[p].push_back(v);
lint cur;
int child;
cin>>cur>>child;
b[v] = cur;
for(int i =0; i<child; i++)
self(v, self);
};
create(0, create);
// for(int i =0; i<n; i++){
// cout<<i<<": \n ";
// for(int v : g[i]){
// cout<<v<<" ("<<b[v]<<"), ";
// }
// cout<<"\n";
// }
using pii = pair<lint, lint>;
auto dfs = [&](int u, auto &self) -> pii {
lint resto = 0, custo = 0;
if(g[u].empty()){
resto = b[u] % w;
custo = b[u] / w;
return {resto, custo};
}
vector<pii> child;
child.reserve(g[u].size());
for(int v : g[u])
child.push_back(self(v, self));
sort(child.begin(), child.end());
lint sum_child = 0;
int big_child = int(child.size());
for(const auto &[r_child, c_child] : child){
custo += c_child;
if(sum_child + r_child <= w){
sum_child += r_child;
big_child--;
}
}
if(sum_child + b[u] <= w){ // meu pai arruma
return {sum_child + b[u], custo};
}
custo += big_child;
//fix small child
custo++;
lint dif = w - sum_child;
b[u] = max<lint>(0, b[u] - dif);
resto = b[u] % w;
custo += b[u] / w;
return {resto, custo};
};
auto [resto, custo] = dfs(1, dfs);
if(resto != 0)
custo++;
cout<<custo<<"\n";
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 11ms
memory: 7836kb
input:
999900000 7339 3 14947 2 12850 3 8986 10 11599 9 8889 10 10711 4 8015 1 11626 0 9492 1 7017 0 8863 0 8632 0 5321 5 9906 0 11687 0 9845 0 10469 0 11708 0 14950 5 11934 0 11922 0 13101 0 12000 0 9082 0 9273 5 12296 0 6119 0 9201 0 12652 0 12957 0 7454 5 12515 0 12976 0 10358 0 13997 0 8371 0 10181 5 8...
output:
1
result:
ok single line: '1'
Test #2:
score: 0
Accepted
time: 3ms
memory: 8336kb
input:
2 1 99999 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ...
output:
99999
result:
ok single line: '99999'
Test #3:
score: 0
Accepted
time: 21ms
memory: 16744kb
input:
7 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10000 0 10000 2 10...
output:
142862500
result:
ok single line: '142862500'
Test #4:
score: 0
Accepted
time: 17ms
memory: 25460kb
input:
2 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10000 1 10...
output:
500000000
result:
ok single line: '500000000'
Test #5:
score: -100
Wrong Answer
time: 15ms
memory: 8676kb
input:
9717 14907 2 6953 2 10004 2 10949 2 11766 2 14015 2 5640 2 10370 2 6432 2 7602 2 10238 2 9755 2 5788 2 10885 2 11858 2 9182 2 14174 0 12614 0 12080 1 12497 0 7708 2 9108 1 14948 0 9107 1 13540 0 7400 2 6303 2 14462 1 8021 0 7659 1 7232 0 14314 2 9495 1 8459 0 13069 1 5777 0 12734 2 7061 2 12810 2 13...
output:
104458
result:
wrong answer 1st lines differ - expected: '105756', found: '104458'