Submission #313603

#TimeUsernameProblemLanguageResultExecution timeMemory
313603amunduzbaevFriend (IOI14_friend)C++14
19 / 100
91 ms33016 KiB
//#include "grader.cpp"
#include "friend.h"
#include <bits/stdc++.h>
using namespace std;
#define pb(n) push_back(n)
int findSample(int n,int c[],int h[],int p[]){
    vector<int>v[n];
        for(int i=1;i<n;i++){
            if(p[i]==0){
                v[h[i]].pb(i);
                v[i].pb(h[i]);
            }
            else {
                if(p[i]==2){
                    v[h[i]].pb(i);
                    v[i].pb(h[i]);
                }
                for(auto x:v[h[i]]){
                    v[x].pb(i);
                    v[i].pb(x);
                }
            }
        }
        int ans=0;
        if(n<=10){
            int i=1;
            while(i<(1<<n)){
                int cost=0;
                vector<bool>used(n,0);
                for(int j=0;j<n;j++){
                    if(!((1<<j)&i)) continue;
                    bool t=true;
                    for(auto x:v[j]) if(used[x]) t=false;
                    if(t){
                        cost+=c[j];
                        used[j]=true;
                    }
                }
                ans=max(ans,cost);
                i++;
            }
        }
    else if(p[1]==1){
        for(int i=0;i<n;i++){
            ans+=c[i];
        }
    }
    else{
        for(int i=0;i<n;i++){
            ans=max(ans,c[i]);
        }

    }
	return ans;
}

/*

6
13 3 6 20 10 15
0 0 0 1 2 0
0 0 1 2 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...