Решение задачи Сбалансированные изменения рейтинга с Codeforces

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


Только что завершился очередной раунд на Codeforces! Раунд собрал n участников. В соответствии с результатами, ожидаемое изменение рейтинга участника i равно ai. Эти изменения рейтинга идеально сбалансированы — их сумма равна 0.

К сожалению, из-за небольших технических проблем раунд был объявлен полурейтинговым. Это значит, что все изменения рейтинга должны быть поделены на два.

Однако есть два условия:

Для каждого участника i обновлённое изменение рейтинга bi должно быть целым числом, максимально близким к ai2. Это значит, что либо bi=⌊ai2⌋, либо bi=⌈ai2⌉. В частности, если ai чётно, то bi=ai2. Здесь ⌊x⌋ обозначает округление вниз до наибольшего целого числа, не большего x, а ⌈x⌉ — округление вверх до наименьшего целого числа, не меньшего x.
Обновлённые изменения рейтинга должны быть идеально сбалансированы — их сумма должна равняться 0.
Можете ли вы помочь с этой задачей?

Код

#include<bits/stdc++.h>
using namespace std;
int main() {
	ios_base::sync_with_stdio(0);
	int n; cin >> n;
	int k = 1;
	for(int i = 0; i < n; i++) {
		int a; cin >> a;
		if(a % 2 == 0) cout << a / 2 << endl;
		else {
			cout << (a + k) / 2 << endl;
			k *= -1;
		}
	}
}

         

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



Комментарии

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