Решение задачи Получи два нуля с Codeforces

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


Вам заданы два числа x и y. Вы можете выполнять операции двух типов:

Заплатить a долларов и увеличить либо уменьшить любое из чисел на 1. Например, если x=0 и y=7 возможны четыре варианта после такой операции:
x=0, y=6;
x=0, y=8;
x=−1, y=7;
x=1, y=7.
Заплатить b долларов и увеличить либо уменьшить оба числа на 1. Например, если x=0 и y=7 возможны два варианта после такой операции:
x=−1, y=6;
x=1, y=8.
Ваша задача превратить оба числа в нули одновременно, т.е. достичь состояния x=y=0. Посчитайте минимально количество долларов, которое вам нужно потратить для этого.

Код

#include <bits/stdc++.h>

using namespace std;

void solve()
{
    long long x, y, a, b;
    cin >> x >> y >> a >> b;
    long long s1 = x * a + y * a;
    long long s2 = (max(x, y) - min(x, y)) * a + min(x, y) * b;
    cout <<  min(s1, s2) << endl;
}
int main()
{
    int t;
    cin >> t;
    while(t--){
        solve();
    }
    return 0;
}

         

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



Комментарии

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