#include <bits/stdc++.h>
//#include "bulb.h"
using namespace std;
struct bec
{
int st,dr;
}val[300005];
bool notbec (int nr)
{
if (nr==-1||nr==-2)
{
return 0;
}
return 1;
}
void dfs (int x,vector <int> l,vector <int> r)
{
if (notbec(l[x]))
{
dfs(l[x],l,r);
val[x].st=val[l[x]].st;
}
else
{
val[x].st=l[x];
}
if (notbec(r[x]))
{
dfs(r[x],l,r);
val[x].dr=val[r[x]].st;
}
else
{
val[x].dr=r[x];
}
}int marcaj[300005],marcaj2[300005],val2[300005];
int FindWinner(int t,vector<int> l,vector<int> r)
{
int n= l.size(),poz,poz1,ok,ok1,i;
poz=0;
while (poz!=-1&&poz!=-2)
{
poz=l[poz];
}
if (poz==-2)
{
return 0;
}
else
{
dfs(0,l,r);
poz=0;
ok=0;
ok1=0;
while (notbec(poz))
{
poz1=r[poz];
while (notbec(poz1))
{
marcaj[poz1]=1;
if (val[r[poz1]].st==-2||r[poz1]==-2)
{
val2[poz]=1;
}
poz1=l[poz1];
}
marcaj2[poz]=1;
if (val[r[poz]].st==-2)
{
ok1=1;
}
poz=l[poz];
}
for (i=0;i<n;i++)
{
if (notbec(r[i])==0)
{
if (r[i]==-2)
{
ok+=notbec(l[0]);
}
else
{
ok+=ok1;
}
}
else
{
if (marcaj[i]==1&&(val[r[i]].st==-2||r[i]==-2))
{
ok+=max(notbec(l[0]),notbec(r[0]));
}
else
if (marcaj2[i]==1)
{
poz=r[i];
if (notbec(i)==0)
{
if (r[i]==-2)
{
ok++;
continue;
}
}
if (val[poz].st==-2||poz==-2)
{
ok++;
continue;
}
ok+=val2[poz];
}
else
{
ok+=ok1;
}
}
}
if (ok==n)
{
return 0;
}
return 1;
}
}
/// -2 albastru,-1 rosu , Al doilea (0) vrea -2 , Primul (1) -1 .
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
14 ms |
508 KB |
Output is correct |
3 |
Correct |
3 ms |
504 KB |
Output is correct |
4 |
Correct |
14 ms |
8312 KB |
Output is correct |
5 |
Correct |
13 ms |
8312 KB |
Output is correct |
6 |
Correct |
3 ms |
504 KB |
Output is correct |
7 |
Correct |
3 ms |
504 KB |
Output is correct |
8 |
Correct |
3 ms |
504 KB |
Output is correct |
9 |
Correct |
3 ms |
504 KB |
Output is correct |
10 |
Incorrect |
3 ms |
504 KB |
Output isn't correct |
11 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
14 ms |
508 KB |
Output is correct |
5 |
Correct |
3 ms |
504 KB |
Output is correct |
6 |
Correct |
14 ms |
8312 KB |
Output is correct |
7 |
Correct |
13 ms |
8312 KB |
Output is correct |
8 |
Correct |
3 ms |
504 KB |
Output is correct |
9 |
Correct |
3 ms |
504 KB |
Output is correct |
10 |
Correct |
3 ms |
504 KB |
Output is correct |
11 |
Correct |
3 ms |
504 KB |
Output is correct |
12 |
Incorrect |
3 ms |
504 KB |
Output isn't correct |
13 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
14 ms |
508 KB |
Output is correct |
5 |
Correct |
3 ms |
504 KB |
Output is correct |
6 |
Correct |
14 ms |
8312 KB |
Output is correct |
7 |
Correct |
13 ms |
8312 KB |
Output is correct |
8 |
Correct |
3 ms |
504 KB |
Output is correct |
9 |
Correct |
3 ms |
504 KB |
Output is correct |
10 |
Correct |
3 ms |
504 KB |
Output is correct |
11 |
Correct |
3 ms |
504 KB |
Output is correct |
12 |
Incorrect |
3 ms |
504 KB |
Output isn't correct |
13 |
Halted |
0 ms |
0 KB |
- |