Решение задачи "Массив" с Codeforces

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


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

Значение произведения всех чисел в первом множестве было меньше нуля ( < 0).
Значение произведения всех чисел во втором множестве было больше нуля ( > 0).
Произведение всех чисел в третьем множестве было равно нулю.
Каждое число из исходного массива должно находиться ровно в одном из множеств.
Помогите Виталию. Разделите заданный массив.

Код

#include <bits/stdc++.h>
using namespace std;
int main() {
	long n,a[100],i,k;
	cin >> n;
	for (i=0;i<n;i++) {
		cin >> a[i];
	}
	sort(a,a+n);
	cout << 1 << " " << a[0] << endl;
	k=1;
	if (a[n-1]>0) cout << 1 << " " << a[n-1];
	else {
		k++;
		cout << 2 << " " << a[1] << " " << a[2]; 
		swap(a[1],a[n-1]);
		swap(a[2],a[n-2]);
	}
	cout << endl << n-k-1;
	for (i=1;i<n-k;i++) cout << " " << a[i]; 	
}

         

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


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

Комментарии

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