Решение задачи "Игра 2048" с Codeforces

Без пояснения   Просмотров: 5


Вы играете в вариацию игры 2048. Изначально у вас есть набор s, состоящий из n чисел. Все числа из этого набора являются степенью двойки.

Вы можете совершать любое количество (возможно, нулевое) операций с этим набором чисел.

Во время каждой операции вы выбираете два равных числа из s, удаляете их из набора s и добавляете в s число, равное их сумме.

Например, если s={1,2,1,1,4,2,2}, и вы выберете числа 2 и 2, то набор превратится в {1,1,1,4,4,2}.

Вы выиграете, если число 2048 окажется в вашем наборе. Например, если s={1024,512,512,4} вы можете выиграть следующим образом: выберите 512 и 512, и ваш набор превратится в {1024,1024,4}. Затем вы можете выбрать числа 1024 и 1024, и ваш набор превратится в {2048,4}.

Определите, можете ли вы выиграть в этой игре.

Вам нужно ответить на q независимых запросов.

Код

#include <bits/stdc++.h>

using namespace std;

int main(){
	int n,q,i,sum,x;
	cin >> q;
	while(q--){
		cin >> n;
		for(i = 1, sum = 0; i <= n; i++){
			cin >> x;
			if(x <= 2048)
                sum += x;
		}
		printf(sum >= 2048 ? "YES\n" : "NO\n");
	}
	
	return 0;
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться