Решение задачи Теряй с Codeforces

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


Вам задан массив a, состоящий из n целых чисел. Каждое ai равно одному из следующих шести чисел: 4,8,15,16,23,42.

Ваша задача — удалить минимальное количество элементов, чтобы сделать массив хорошим.

Массив длины k называется хорошим, если k делится на 6 и возможно разделить его на k6 подпоследовательностей 4,8,15,16,23,42.

Примеры хороших массивов:

[4,8,15,16,23,42] (весь массив является необходимой последовательностью);
[4,8,4,15,16,8,23,15,16,42,23,42] (первая последовательность состоит из первого, второго, четвертого, пятого, седьмого и десятого элементов, а вторая состоит из оставшихся элементов);
[] (пустой массив является хорошим).
Примеры плохих массивов:

[4,8,15,16,42,23] (порядок элементов должен быть в точности 4,8,15,16,23,42);
[4,8,15,16,23,42,4] (длина массива не делится на 6);
[4,8,15,16,23,42,4,8,15,16,23,23] (первая последовательность может состоять из первых шести элементов, но оставшийся массив не может составить необходимую последовательность).

Код

#include<bits/stdc++.h>
using namespace std;
int a[100];
int main(){
	int n;
	cin>>n;
	int d;
	for(int i = 1;i <= n;i++){
		cin >> d;
		if(d == 4) 
            a[d]++;
		if(d == 8 && a[4])
            a[4]--, a[d]++;
		if(d == 15 && a[8])
            a[8]--,a[d]++;
		if(d == 16 && a[15])
            a[15]--,a[d]++;
		if(d == 23 && a[16])
            a[16]--,a[d]++;
		if(d == 42 && a[23])
            a[23]--,a[d]++;
	}

	cout<<n-6*a[42]<<endl;
	
}

         

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



Комментарии

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