답안 #154237

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
154237 2019-09-19T12:50:26 Z stefantaga Bulb Game (FXCUP4_bulb) C++17
36 / 100
1000 ms 62760 KB
#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];
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;
                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;
                }
                while (notbec(poz))
                {
                    if (val[r[poz]].st==-2||r[poz]==-2)
                    {
                        ok++;
                        break;
                    }
                    poz=l[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 3 ms 504 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 568 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 Correct 9 ms 568 KB Output is correct
11 Correct 4 ms 696 KB Output is correct
12 Correct 5 ms 2040 KB Output is correct
# 결과 실행 시간 메모리 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 3 ms 504 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 568 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 Correct 9 ms 568 KB Output is correct
13 Correct 4 ms 696 KB Output is correct
14 Correct 5 ms 2040 KB Output is correct
15 Correct 3 ms 504 KB Output is correct
16 Correct 3 ms 504 KB Output is correct
17 Correct 3 ms 504 KB Output is correct
18 Correct 15 ms 8312 KB Output is correct
19 Correct 14 ms 8312 KB Output is correct
20 Correct 3 ms 584 KB Output is correct
21 Correct 3 ms 540 KB Output is correct
22 Correct 3 ms 504 KB Output is correct
23 Correct 3 ms 504 KB Output is correct
24 Correct 4 ms 504 KB Output is correct
25 Correct 4 ms 632 KB Output is correct
26 Correct 5 ms 2168 KB Output is correct
# 결과 실행 시간 메모리 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 3 ms 504 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 568 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 Correct 9 ms 568 KB Output is correct
13 Correct 4 ms 696 KB Output is correct
14 Correct 5 ms 2040 KB Output is correct
15 Correct 3 ms 504 KB Output is correct
16 Correct 3 ms 504 KB Output is correct
17 Correct 3 ms 504 KB Output is correct
18 Correct 15 ms 8312 KB Output is correct
19 Correct 14 ms 8312 KB Output is correct
20 Correct 3 ms 584 KB Output is correct
21 Correct 3 ms 540 KB Output is correct
22 Correct 3 ms 504 KB Output is correct
23 Correct 3 ms 504 KB Output is correct
24 Correct 4 ms 504 KB Output is correct
25 Correct 4 ms 632 KB Output is correct
26 Correct 5 ms 2168 KB Output is correct
27 Correct 74 ms 7988 KB Output is correct
28 Execution timed out 1069 ms 62760 KB Time limit exceeded
29 Halted 0 ms 0 KB -