Решение задачи Перед экзаменом с Codeforces

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


Завтра у Пети экзамен по биологии. Он очень не любит этот предмет, но d дней назад узнал, что все-таки придется его сдавать. Строгие родители сразу же наказали Пете заниматься подготовкой, и при этом не менее чем minTime i и не более чем maxTime i часов в i-ый день. К тому же они предупредили Петю, что за день до экзамена проверят, как он следовал их указанию.

И вот именно сегодня родители требуют от Пети расписание его занятий. Однако мальчик подсчитал лишь суммарное число часов sumTime, затраченное им на подготовку. Теперь он хочет узнать, удастся ли ему предоставить родителям список sсhedule из d целых чисел, в котором каждое число sсhedule i означает время в часах, проведенное Петей в i-ый день за изучением биологии. Числа должны удовлетворять ограничениям родителей, а сумма всех schedule i должна быть в точности равна sumTime.

Код

#include<bits/stdc++.h>
using namespace std;
const int MAXD=40;
int mn[MAXD], mx[MAXD];
int main(){
	int d,s,sn=0,sm=0;
	cin>>d>>s;
	for(int i=0; i<d; i++){
		cin>>mn[i]>>mx[i];
		sn += mn[i];
		sm += mx[i];
	}
	if(s>=sn && s<=sm){
		cout<<"YES"<<endl;
		s -= sn;
		for(int i=0; i<d; i++){
			int aux = min(max(0,s), mx[i]-mn[i]);
			s = s -(mx[i]-mn[i]);
			cout<<mn[i] + aux<<" ";
		}
	}else{
		cout<<"NO";
	}
}

         

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



Комментарии

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