Решение задачи "Подготовка олимпиады" с Codeforces

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


У вас есть n задач. Сложность i-й из них вы оценили целым числом c i. Теперь вы хотите подготовить комплект задач для олимпиады, используя некоторые из придуманных задач.

Комплект задач для олимпиады должен состоять не менее чем из двух задач. Вы считаете, что суммарная сложность задач олимпиады должна быть не менее l и не более r. Также вы считаете, что разница в сложности между самой легкой и самой тяжелой из выбранных задач должна быть не меньше x.

Найдите количество способов выбрать комплект задач для олимпиады.

Код

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int MAX_N=16;
int n,l,r,x;
int c[MAX_N];

void solve()
{
	int ans = 0;
	for(int f=1;f<(1<<n);++f)if(f&(f-1)){
		int tot = 0, mi = 1e7, mx = 0;
		for(int i=0;i<n;++i)if(f>>i&1){
			tot += c[i];
			mi=min(mi,c[i]);
			mx=max(mx,c[i]);
		}
		if(tot >= l && tot <= r && mx-mi>=x) ans++;
	}
	cout << ans << '\n';
}

int main()
{
	cin >> n >> l >> r >> x;
	for(int i=0;i<n;++i)cin >> c[i];
	solve();
	return 0;
}

         

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


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

Комментарии

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