Решение задачи Простые префиксные суммы с Codeforces

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


Мы раздаем огромные красивые мешки, содержащие плитки с числами!

Мешок, который мы хотим вам подарить, содержит n плиток. На каждой из них записано одно число — 1 или 2.

Тем не менее, есть одно условие, которое вы должны выполнить, чтобы получить приз.

Вам нужно выложить все плитки из сумки в ряд в любом порядке, в котором вы пожелаете. Затем, мы посчитаем суммы на всех префиксах последовательности, а затем посчитаем, сколько из этих сумм являются простыми числами. Если вы хотите получить приз, вы должны максимизировать количество простых чисел, которые у вас получатся.

Сможете ли вы выиграть приз? Спешите, мешки ждут!

Код

#include <bits/stdc++.h>
using namespace std;
int main(){
	int n,c[3]={0,0,0},i,j,v;
	cin >> n;
	for(i=0;i<n;i++){
		scanf("%d",&v);
		c[v]++;
	}
	if(c[1]>=1 && c[2]>=1){
		printf("2 1");
		c[1]--;c[2]--;
	}
	while(c[2]--)
		printf(" 2");
	while(c[1]--)
		printf(" 1");
	puts("");
}

         

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



Комментарии

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