Submission #242407

# Submission time Handle Problem Language Result Execution time Memory
242407 2020-06-27T15:33:30 Z joseacaz Friend (IOI14_friend) C++17
27 / 100
47 ms 65540 KB
#include "friend.h"
#include <bits/stdc++.h>

#define pb push_back

using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAXN = 1005;
int prot[3], on[MAXN], DP[MAXN][2], vis[MAXN][2];
int aux, ans, c[MAXN];
vi Graph[MAXN];

int solve(int node, int f)
{
    if(vis[node][f])
        return DP[node][f];

    int res1 = 0, res2 = 0;
    for(auto i : Graph[node])
    {
        res1 += solve(node, 1);
        res2 += solve(node, 0);
    }
    
    vis[node][f] = 1;
    if(f)
        return DP[node][f] = max(res1, res2 + c[node]);
    else
        return DP[node][f] = res1;
}

// Find out best sample
int findSample(int N, int _conf[], int host[], int protocol[])
{
    if(N > 1000)
        return 0;

    for(int i = 0; i < N; i++)
    {
        c[i] = _conf[i];
        if(i >= 1)
            prot[protocol[i]]++;
    }
    
    //S1
    if(N <= 10)
    {
        for(int i = 1; i < N; i++)
        {
            if(protocol[i] == 0)
            {
                Graph[host[i]].pb(i);
                Graph[i].pb(host[i]);
            }
            else if(protocol[i] == 1)
            {
                for(auto v : Graph[host[i]])
                {
                    Graph[v].pb(i);
                    Graph[i].pb(v);
                }
            }
            else if(protocol[i] == 2)
            {
                for(auto v : Graph[host[i]])
                {
                    Graph[v].pb(i);
                    Graph[i].pb(v);
                }
                Graph[host[i]].pb(i);
                Graph[i].pb(host[i]);
            }
        }
        for(int i = 0; i < (1 << N); i++)
        {
            aux = 0;
            for(int j = 0; j < N; j++)
            {
                on[j] = 0;
                if(i & (1 << j))
                {
                    on[j] = 1;
                    aux += c[j];
                }
            }
            
            bool ind = 1;
            for(int node = 0; node < N; node++)
                if(on[node])
                    for(auto j : Graph[node])
                        if(on[j])
                            ind = 0;
            if(!ind)
                continue;
            ans = max(ans, aux);
        }
    }
    //S2
    else if(prot[1] == N - 1)
    {
        for(int i = 0; i < N; i++)
            ans += c[i];
    }
    //S3
    else if(prot[2] == N - 1)
    {
        for(int i = 0; i < N; i++)
            ans = max(ans, c[i]);
    }
    //S4
    else if(prot[0] == N - 1)
    {
        for(int i = 1; i < N; i++)
        {
            if(protocol[i] == 0)
            {
                Graph[host[i]].pb(i);
                Graph[i].pb(host[i]);
            }
        }
        ans = solve(0, 1);
    }
    return ans;
}

Compilation message

friend.cpp: In function 'int solve(int, int)':
friend.cpp:24:14: warning: unused variable 'i' [-Wunused-variable]
     for(auto i : Graph[node])
              ^
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 4 ms 384 KB Output is correct
7 Correct 4 ms 384 KB Output is correct
8 Correct 4 ms 384 KB Output is correct
9 Correct 4 ms 384 KB Output is correct
10 Correct 4 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 4 ms 384 KB Output is correct
13 Correct 4 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 4 ms 384 KB Output is correct
16 Correct 5 ms 384 KB Output is correct
17 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 6 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Runtime error 44 ms 65540 KB Execution killed with signal 9 (could be triggered by violating memory limits)
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 4 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Runtime error 47 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 384 KB Output is correct
10 Correct 4 ms 384 KB Output is correct
11 Correct 4 ms 384 KB Output is correct
12 Incorrect 39 ms 1528 KB Output isn't correct
13 Halted 0 ms 0 KB -