#include <iostream>
using namespace std;
const int M = 1<<17;
int p[M], q[M];
int findSample(int n, int cnf[], int hst[], int prt[]){
for (int i=1;i<=n;i++)
p[i] = cnf[i - 1];
for (int i=n-1;i;i--){
int a = hst[i] + 1, b = i + 1;
if (prt[i] == 0){
p[a] = p[a] + q[b];
q[a] = q[a] + max(p[b], q[b]);
}
else if (prt[i] == 1){
p[a] = max(p[a] + p[b], max(p[a] + q[b], p[b] + q[a]));
q[a] = q[a] + q[b];
}
else{
p[a] = max(p[a] + q[b], p[b] + q[a]);
q[a] = q[b] + q[a];
}
// cout<<a<<" "<<b<<" "<<p[a]<<" "<<q[a]<<endl;
}
return max(p[1], q[1]);
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |