답안 #138582

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
138582 2019-07-30T07:10:17 Z 이온조(#3319) Who wants to live forever? (CERC12_B) C++14
0 / 1
17 ms 760 KB
#include <bits/stdc++.h>
using namespace std;

int A[200009], B[200009];

bool sim(int N, int c) {
	bool f1 = 0;
	while(c--) {
		f1 = 0;
		for(int i=1; i<=N; i++) B[i] = (A[i-1] ^ A[i+1]);
		for(int i=1; i<=N; i++) A[i] = B[i], f1 |= A[i];
		if(!f1) break;
	}
	bool f = 0;
	for(int i=1; i<=N; i++) f |= A[i];
	return f;
}

int main() {
	cin.tie(0);
	ios::sync_with_stdio(0);
	int T; cin >> T;
	while(T--) {
		string S; cin >> S;
		int N = S.size();
		bool f = (((N+1) &- (N+1)) != N+1);
		if(f) {
			for(int i=1; i<=N; i++) A[i] = (S[i-1] == '1');
			A[0] = A[N+1] = 0;
			f &= sim(N, 3);
			if(N % 4 == 3 && f) f &= sim(N, (int)sqrt(N*5));
		}
		puts(f ? "LIVES" : "DIES");
	}
	// for(int k=1; k<=100; k++) {
	// 	for(int j=1; j<=k; j++) A[j] = 0;
	// 	A[1] = 1;
	// 	if(!sim(k, 10000)) printf("k: %d\n", k);
	// }
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 15 ms 760 KB Output is correct
4 Incorrect 17 ms 376 KB Output isn't correct
5 Halted 0 ms 0 KB -