Submission #73600

# Submission time Handle Problem Language Result Execution time Memory
73600 2018-08-28T13:45:28 Z MKopchev Friend (IOI14_friend) C++14
46 / 100
50 ms 4460 KB
#include<bits/stdc++.h>
#include "friend.h"
using namespace std;
const int nmax=1e3+42;
vector<int> adj[nmax];
int conf[nmax];
int dp[nmax][2];
int rec(int node,int par,bool take)
{
    if(dp[node][take]!=-1)return dp[node][take];
    int ans=(take?conf[node]:0);
    if(take)
    {
        for(auto k:adj[node])
            if(k!=par)
            ans=ans+rec(k,node,0);
    }
    else
    {
        for(auto k:adj[node])
            if(k!=par)
            ans=ans+max(rec(k,node,0),rec(k,node,1));
    }
    dp[node][take]=ans;
    return ans;
}
bool edge[15][15];
int findSample(int n,int confidence[],int host[],int protocol[])
{
    int sum=confidence[0],maxi=confidence[0];
    bool zero=1,one=1,two=1;
    for(int i=1;i<n;i++)
    {
        if(protocol[i]!=0)zero=0;
        if(protocol[i]!=1)one=0;
        if(protocol[i]!=2)two=0;
        sum=sum+confidence[i];
        maxi=max(maxi,confidence[i]);
    }
    if(one)return sum;
    if(two)return maxi;
    if(zero)
    {
        for(int i=0;i<n;i++)
            conf[i]=confidence[i];
        for(int i=1;i<n;i++)
        {
            adj[host[i]].push_back(i);
            adj[i].push_back(host[i]);
        }
        memset(dp,-1,sizeof(dp));
        return max(rec(0,0,0),rec(0,0,1));
    }

    for(int i=1;i<n;i++)
    {
        if(protocol[i]==0)
        {
            edge[host[i]][i]=1;
            edge[i][host[i]]=1;
            continue;
        }
        for(int j=0;j<n;j++)
            if(edge[j][host[i]])
            {
                edge[i][j]=1;
                edge[j][i]=1;
            }
        if(protocol[i]==2)
        {
            edge[i][host[i]]=1;
            edge[host[i]][i]=1;
        }
    }

    int ans=0;
    for(int mask=0;mask<(1<<n);mask++)
    {
        int sum=0;
        for(int j=0;j<n;j++)
            if(mask&(1<<j))sum=sum+confidence[j];
        for(int j=0;j<n;j++)
            for(int k=j+1;k<n;k++)
            if(edge[j][k]&&mask&(1<<j)&&mask&(1<<k))sum=0;
        ans=max(ans,sum);
    }
    return ans;

}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 3 ms 376 KB Output is correct
3 Correct 2 ms 420 KB Output is correct
4 Correct 4 ms 620 KB Output is correct
5 Correct 2 ms 620 KB Output is correct
6 Correct 3 ms 620 KB Output is correct
7 Correct 2 ms 620 KB Output is correct
8 Correct 2 ms 620 KB Output is correct
9 Correct 3 ms 712 KB Output is correct
10 Correct 2 ms 748 KB Output is correct
11 Correct 3 ms 748 KB Output is correct
12 Correct 3 ms 748 KB Output is correct
13 Correct 2 ms 800 KB Output is correct
14 Correct 2 ms 800 KB Output is correct
15 Correct 3 ms 800 KB Output is correct
16 Correct 2 ms 800 KB Output is correct
17 Correct 4 ms 800 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 800 KB Output is correct
2 Correct 2 ms 800 KB Output is correct
3 Correct 2 ms 800 KB Output is correct
4 Correct 3 ms 800 KB Output is correct
5 Correct 4 ms 800 KB Output is correct
6 Correct 3 ms 800 KB Output is correct
7 Correct 3 ms 816 KB Output is correct
8 Correct 4 ms 816 KB Output is correct
9 Correct 3 ms 816 KB Output is correct
10 Correct 2 ms 856 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 856 KB Output is correct
2 Correct 3 ms 856 KB Output is correct
3 Correct 2 ms 856 KB Output is correct
4 Correct 3 ms 856 KB Output is correct
5 Correct 3 ms 856 KB Output is correct
6 Correct 3 ms 856 KB Output is correct
7 Correct 3 ms 856 KB Output is correct
8 Correct 2 ms 856 KB Output is correct
9 Correct 2 ms 856 KB Output is correct
10 Correct 3 ms 856 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 856 KB Output is correct
2 Correct 3 ms 856 KB Output is correct
3 Correct 3 ms 856 KB Output is correct
4 Correct 4 ms 856 KB Output is correct
5 Correct 2 ms 868 KB Output is correct
6 Correct 3 ms 868 KB Output is correct
7 Correct 3 ms 868 KB Output is correct
8 Correct 3 ms 868 KB Output is correct
9 Correct 2 ms 868 KB Output is correct
10 Correct 3 ms 868 KB Output is correct
11 Correct 4 ms 868 KB Output is correct
12 Correct 4 ms 868 KB Output is correct
13 Correct 3 ms 868 KB Output is correct
14 Correct 2 ms 868 KB Output is correct
15 Correct 4 ms 868 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 868 KB Output is correct
2 Correct 2 ms 868 KB Output is correct
3 Correct 3 ms 868 KB Output is correct
4 Correct 3 ms 868 KB Output is correct
5 Correct 2 ms 868 KB Output is correct
6 Correct 2 ms 868 KB Output is correct
7 Correct 2 ms 868 KB Output is correct
8 Correct 2 ms 868 KB Output is correct
9 Correct 4 ms 896 KB Output is correct
10 Correct 2 ms 896 KB Output is correct
11 Incorrect 3 ms 896 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 896 KB Output is correct
2 Correct 3 ms 896 KB Output is correct
3 Correct 2 ms 896 KB Output is correct
4 Correct 4 ms 896 KB Output is correct
5 Correct 3 ms 896 KB Output is correct
6 Correct 3 ms 896 KB Output is correct
7 Correct 3 ms 916 KB Output is correct
8 Correct 2 ms 916 KB Output is correct
9 Correct 2 ms 916 KB Output is correct
10 Correct 2 ms 916 KB Output is correct
11 Correct 3 ms 916 KB Output is correct
12 Runtime error 50 ms 4460 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Halted 0 ms 0 KB -