This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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];
ll aux, ans;
vi Graph[MAXN];
// Find out best sample
int findSample(int N, int confidence[], int host[], int protocol[])
{
if(N > 1000)
return 0;
for(int i = 1; i < N; i++)
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 += confidence[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 += confidence[i];
}
//S3
else if(prot[2] == N - 1)
{
for(int i = 0; i < N; i++)
ans = max(ans, (ll)confidence[i]);
}
//S4
else if(prot[0] == N - 1)
{
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |