답안 #299671

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
299671 2020-09-15T12:25:43 Z E869120 Football (info1cup20_football) C++14
100 / 100
53 ms 2328 KB
#include <bits/stdc++.h>
using namespace std;

long long T, N, K;
long long A[1 << 18];
int dp[109][109];

void init() {
	for (int i = 1; i <= 100; i++) {
		for (int j = 0; j <= 100; j++) {
			bool used[109];
			for (int k = 0; k <= 100; k++) used[k] = false;
			for (int k = 1; k <= min(i, j); k++) {
				used[dp[k][j - k]] = true;
			}
			for (int k = 0; k <= 100; k++) {
				if (used[k] == false) { dp[i][j] = k; break; }
			}
		}
	}
}

bool solve_Subtask1() {
	long long ret = 0;
	for (int i = 1; i <= N; i++) ret += A[i];
	if (ret % 2LL == 1LL) return true;
	return false;
}

bool solve_Subtask6() {
	while (K >= 1) {
		long long ret = 0;
		for (int i = 1; i <= N; i++) ret += A[i];
		if (ret % 2LL == 1LL) return true;
		for (int i = 1; i <= N; i++) A[i] /= 2LL;
		K /= 2LL;
	}
	return false;
}

bool solve_Subtask4() {
	int ret = 0;
	for (int i = 1; i <= N; i++) ret ^= dp[min(K, 100LL)][A[i]];
	if (ret == 0) return false;
	return true;
}

int main() {
	init();
	string str = "";
	scanf("%lld", &T);
	for (int i = 1; i <= T; i++) {
		scanf("%lld%lld", &N, &K);
		for (int j = 1; j <= N; j++) scanf("%lld", &A[j]);
		bool ret = false;
		ret = solve_Subtask6();
		if (ret == false) str += "0";
		if (ret == true) str += "1";
	}
	cout << str << endl;
	return 0;
}

Compilation message

football.cpp: In function 'int main()':
football.cpp:51:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   51 |  scanf("%lld", &T);
      |  ~~~~~^~~~~~~~~~~~
football.cpp:53:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   53 |   scanf("%lld%lld", &N, &K);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~
football.cpp:54:37: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   54 |   for (int j = 1; j <= N; j++) scanf("%lld", &A[j]);
      |                                ~~~~~^~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 20 ms 512 KB Output is correct
2 Correct 20 ms 640 KB Output is correct
3 Correct 20 ms 512 KB Output is correct
4 Correct 20 ms 512 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 384 KB Output is correct
2 Correct 15 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 31 ms 768 KB Output is correct
2 Correct 31 ms 768 KB Output is correct
3 Correct 31 ms 632 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 50 ms 632 KB Output is correct
2 Correct 49 ms 2296 KB Output is correct
3 Correct 53 ms 2328 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 20 ms 640 KB Output is correct
2 Correct 20 ms 512 KB Output is correct
3 Correct 20 ms 512 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 512 KB Output is correct
2 Correct 21 ms 512 KB Output is correct
3 Correct 23 ms 512 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 512 KB Output is correct
2 Correct 22 ms 512 KB Output is correct