Submission #221810

#TimeUsernameProblemLanguageResultExecution timeMemory
221810patrikpavic2Friend (IOI14_friend)C++17
100 / 100
40 ms3448 KiB
/** * user: ppavic * fname: Patrik * lname: Pavić * task: friend * score: 100.0 * date: 2019-06-26 18:21:58.310586 */ #include "friend.h" #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #define X first #define Y second #define PB push_back using namespace std; typedef vector < int > vi; typedef pair < int, int > pii; typedef vector < pii > vp; const int N = 1e5 + 500; const int INF = 0x3f3f3f3f; int p[N], q[N]; void spoji0(int x,int y){ int np = p[x] + q[y]; int nq = max(p[y], q[y]) + q[x]; p[x] = np, q[x] = nq; } void spoji1(int x,int y){ int np = max(max(p[x] + p[y], p[x] + q[y]), p[y] + q[x]); int nq = q[x] + q[y]; p[x] = np, q[x] = nq; } void spoji2(int x,int y){ int np = max(p[x] + q[y], p[y] + q[x]); int nq = q[x] + q[y]; p[x] = np, q[x] = nq; } int findSample(int n,int cc[],int h[],int op[]){ for(int i = 0;i < n;i++) p[i] = cc[i]; for(int i = n - 1; i ;i--){ if(op[i] == 0) spoji0(h[i], i); if(op[i] == 1) spoji1(h[i], i); if(op[i] == 2) spoji2(h[i], i); } return max(p[0], q[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...