답안 #149798

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
149798 2019-09-01T07:11:11 Z 잉여로운 고3(#3749, imyujin, sebinkim) Bulb Game (FXCUP4_bulb) C++17
0 / 100
2 ms 376 KB
#include <bits/stdc++.h>

#include "bulb.h"

using namespace std;

typedef tuple <int, int, int, int, int> tii;

vector <int> L, R;
int n;

tii dfs(int p)
{
	int d0, d1, d2, d3, s;
	int l0, l1, l2, l3, ls;
	int r0, r1, r2, r3, rs;
	
	if(p < 0) d0 = -p, d1 = d2 = d3 = s = 0;
	else{
		tie(l0, l1, l2, l3, ls) = dfs(L[p]);
		tie(r0, r1, r2, r3, rs) = dfs(R[p]);
		s = ls + rs + 1;
		
		d0 = l0;
		
		d1 = r0;
		if(ls > 0) d1 |= l1;
		if(rs > 0) d1 |= l0;
		
		d2 = r0;
		if(ls > 0) d2 |= l2;
		if(rs > 0) d2 |= l0;
		
		d3 = d0;
		if(d0 == 1){
			if(!(l3 & 2) && r0 != 2) {}
			else if(!(r2 & 2)) {}
			else if(!(l2 & 2) && !(l3 & 2)) {}
			else d3 |= 2;
		}
		else{
			if(!(l3 & 1) && r0 != 1) {}
			else if(!(r2 & 1)) {}
			else if(!(l2 & 1) && !(l3 & 1)) {}
			else d3 |= 1;
		}
	}
	
	return tii(d0, d1, d2, d3, s);
}

int FindWinner(int T, vector <int> _L, vector<int> _R)
{
	n = L.size(); swap(L, _L); swap(R, _R);
	
	int d0, d1, d2, d3, s;
	
	tie(d0, d1, d2, d3, s) = dfs(0);
	
	if(d3 | 2) return 0;
	else return 1;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 348 KB Output is correct
2 Incorrect 2 ms 376 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -