Submission #518692

#TimeUsernameProblemLanguageResultExecution timeMemory
518692amukkalirFriend (IOI14_friend)C++17
0 / 100
1 ms332 KiB
#include "friend.h" #include <bits/stdc++.h> typedef long long ll; using namespace std; #define pb push_back; const int nax = 1e5; ll dp[nax+5]; ll tree[4*nax+5]; int n; void upd(int idx, int l, int r, int where) { if(l == r && l == where) tree[idx] = dp[where]; else if (l <= where && where <= r) { int m = (l+r)>>1; upd(idx<<1, l, m, where); upd(idx<<1|1, m+1, r, where); tree[idx] = max(tree[idx<<1], tree[idx<<1|1]); } } ll query(int idx, int l, int r, int from, int to) { if(to < l || from > r) return 0; else if (l <= from && to <= r) return tree[idx]; else { int m = (l+r) >> 1; return max(query(idx<<1, l, m, from, to), query(idx<<1|1, m+1, r, from, to)); } } ll get (int l, int r) { if(r < l) return 0; return query(1, 0, n-1, l, r); } // Find out best sample int findSample(int N,int confidence[],int host[],int protocol[]){ n = N; dp[0] = confidence[0]; ll ans = dp[0]; for(int i=1; i<N; i++) { dp[i] = confidence[i] + max(get(0, host[i]-1), get(host[i]+1, i)); upd(1, 0, n-1, i); ans = max(ans, dp[i]); } return ans; }
#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...