제출 #1225966

#제출 시각아이디문제언어결과실행 시간메모리
1225966ByeWorld친구 (IOI14_friend)C++20
100 / 100
16 ms3908 KiB
#include "friend.h" #include <bits/stdc++.h> // #pragma GCC optimize("O3") #define ll long long #define se second #define fi first #define pb push_back #define lf (id<<1) #define rg ((id<<1)|1) #define md ((l+r)>>1) using namespace std; typedef pair<int,int> pii; typedef pair<pii,pii> ipii; const int MAXN = 1e5+10; const int SQRT = 450; const int INF = 2e9; const int LOG = 20; void chmn(int &a, int b){ a = min(a, b); } void chmx(int &a, int b){ a = max(a, b); } int n, a[MAXN]; int par[MAXN], ty[MAXN]; int dp[MAXN][3]; int findSample(int N,int confidence[],int host[],int protocol[]){ n = N; for(int i=1; i<=n; i++){ a[i] = confidence[i-1]; dp[i][1] = a[i]; } for(int i=1; i<n; i++){ par[i+1] = host[i]+1; ty[i+1] = protocol[i]; } for(int i=n; i>=2; i--){ int up = par[i]; int pp = dp[par[i]][1], qq = dp[par[i]][0]; int p = dp[i][1], q = dp[i][0]; if(ty[i]==0){ //child dp[up][1] = pp+q; dp[up][0] = qq + max(p, q); } else if(ty[i]==1){ // friend is friend dp[up][1] = max(pp+p, max(pp+q, qq+p)); dp[up][0] = qq + q; } else { dp[up][1] = max(pp+q, qq+p); dp[up][0] = qq + q; } } return max(dp[1][1], dp[1][0]); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...