답안 #138548

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

char S[200009];
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() {
	int T; scanf("%d",&T);
	while(T--) {
		scanf(" %s", S+1);
		int N = strlen(S+1);
		bool f = (((N+1) &- (N+1)) != N+1);
		for(int i=1; i<=N; i++) A[i] = (S[i] == '1');
		A[0] = A[N+1] = 0;
		f &= sim(N, 2);
		if(N % 4 == 3 && f) f &= sim(N, N / (int)sqrt(N) + 50);
		puts(f ? "LIVES" : "DIES");
	}
	// for(int k=1; k<=30; k++) {
	// 	int cnt = 0;
	// 	for(int i=0; i<(1<<k); i++) {
	// 		for(int j=0; j<k; j++) A[j+1] = ((i >> j) & 1);
	// 		if(!sim(k, 300)) {
	// 			for(int j=0; j<k; j++) printf("%d", ((i>>j) & 1));
	// 			puts("");
	// 			++cnt;
	// 		}
	// 		if(cnt > 50) break;
	// 	}
	// 	printf("k: %d, cnt: %d\n", k, cnt);
	// }
	return 0;
}

Compilation message

B.cpp: In function 'int main()':
B.cpp:21:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  int T; scanf("%d",&T);
         ~~~~~^~~~~~~~~
B.cpp:23:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %s", S+1);
   ~~~~~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 22 ms 760 KB Output is correct
4 Incorrect 22 ms 376 KB Output isn't correct
5 Halted 0 ms 0 KB -