Предмет: Информатика,
автор: kirich8899
Решите пожалуйста первую задачу
Желательно на C и C++
Приложения:
csharp:
О, а как ты попал на эту олимпиаду?
Ответы
Автор ответа:
0
#include "iostream"
using namespace std;
int main(){
int a, b, c;
int x = 0, y = 0, z = 0;
cin >> a >> b >> c;
int amount = a + b + c;
while(amount > 0){
if(b != 0 && c != 0 && a < b + c){
x += 1;
b -= 1; c -= 1;
}
if(a != 0 && c != 0 && b < a + c){
y += 1;
a -= 1; c -= 1;
}
if(a != 0 && b != 0 && c < a + b){
z += 1;
a -= 1; b -= 1;
}
amount -= 2;
}
cout << x << " " << y << " " << z << endl;
return 0;
}
Приложения:
4 4 4 - изначально
3 3 4 - 1 подарок
2 2 4 - 2 подарок
1 1 4 - 3 подарок
0 0 4 - 4 подарок
и на этом всё. 4 шоколадки так и останутся. А теперь мы добавим условие, чтобы сумма собираемых была больше кол-ву оставшейся.
3 3 4 - 1 подарок
2 2 4 - 2 подарок. Здесь проверяестся 2+2 = 4, но оно не больше чем 4 шоколадки. значит собираем другой подарок
2 1 3 - 3 подарок. Теперь также 2+1 = 3, оно не больше чем 3 шоколадки. значит собираем снова другой
1 1 2 - 4 подарок. аналогичная ситуация
1 0 1 - 5 подарок
0 0 0 - 6 подарок
И в итоге, мы получаем 6 подарков. То самое макс. кол-во, о котором говорилось.
Похожие вопросы
Предмет: Другие предметы,
автор: almaspurhanov
Предмет: Қазақ тiлi,
автор: fatimazmagazy
Предмет: Физика,
автор: rtulinov58
Предмет: География,
автор: nastya3296179
Предмет: Обществознание,
автор: lenalenaa98