이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "friend.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <math.h>
#include <assert.h>
#include <queue>
#include <map>
#include <set>
#include <string>
#include <algorithm>
#include <iostream>
#include <functional>
#include <unordered_map>
#include <unordered_set>
#include <list>
#include <bitset>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define Fi first
#define Se second
#define pb(x) push_back(x)
#define sz(x) ((int)(x).size())
#define rep(i, n) for(int i=0;i<n;i++)
#define all(x) (x).begin(), (x).end()
typedef tuple<int, int, int> t3;
typedef pair<ll, ll> Pll;
typedef long double ldouble;
int par[100010];
int D[100010][2];
int findSample(int n,int confidence[],int host[],int protocol[]){
rep(i, n) D[i][0] = 0, D[i][1] = confidence[i];
for(int i=n-1;i;i--) {
int h = host[i], c = protocol[i];
if(c == 0) D[h][0] += max(D[i][0], D[i][1]), D[h][1] += D[i][0];
else if(c == 1) {
D[h][1] = max(D[h][1] + max(D[i][0], D[i][1]), D[h][0] + D[i][1]);
D[h][0] += D[i][0];
}
else if(c == 2) {
D[h][1] = max(D[h][0] + D[i][1], D[h][1] + D[i][0]);
D[h][0] += D[i][0];
}
}
return max(D[0][0], D[0][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... |