Submission #886947

#TimeUsernameProblemLanguageResultExecution timeMemory
886947JakobZorzFriend (IOI14_friend)C++17
100 / 100
20 ms3444 KiB
#include"friend.h"
#include<vector>
using namespace std;

// Find out best sample
int findSample(int n,int confidence[],int host[],int protocol[]){
    vector<int>yes(n),no(n);
    for(int i=0;i<n;i++)
        yes[i]=confidence[i];
    
    for(int i=n-1;i>0;i--){
        int j=host[i]; // eliminate i
        switch(protocol[i]){
            case 0: { // I am your friend
                yes[j]=no[i]+yes[j];
                no[j]=max(no[i]+no[j],yes[i]+no[j]);
                break;
            }
            case 1: { // My friends are your friends
                yes[j]=max(yes[i]+yes[j],max(yes[i]+no[j],no[i]+yes[j]));
                no[j]=no[i]+no[j];
                break;
            }
            case 2: { // We are your friends
                yes[j]=max(yes[i]+no[j],no[i]+yes[j]);
                no[j]=no[i]+no[j];
                break;
            }
        }
    }
    
    return max(yes[0],no[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...