Cod sursa(job #2500175)

Utilizator andreitudorpAndrei Tudor Popescu andreitudorp Data 27 noiembrie 2019 12:47:45
Problema Branza Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>

using namespace std;

ifstream cin("branza.in");
ofstream cout("branza.out");

#define MAXN 100005

int n, s, t;
long long ans;
int p[MAXN];
int c[MAXN];
bool ok[MAXN];

int main()
{
    cin >> n >> s >> t;

    for(int i = 0; i < n; i++)
    {
        cin >> p[i] >> c[i];
    }

    int i, j, sum = 0;
    ans = 0;

    for(i = 0; i < n; i++)
    {
        sum = 0;

        if(p[i] * (c[i] + c[i+1]) + (s * c[i+1]) < (p[i] * c[i]) + (p[i+1] * c[i+1]))
        {
            sum += p[i] * (c[i] + c[i+1]) + (s * c[i+1]);
            ok[i] = 1;
            ok[i+1] = 1;
            c[i+1] = 0;
            c[i] = 0;
            for(j = 2; j <= t; j++)
            {
                if(sum + p[i] * c[i+j] + (s * c[i+j] * j) < sum + (p[i] * c[i]) + (p[i+j] * c[i+j]))
                {
                    sum += p[i] * c[i+j] + (s * c[i+j] * j);
                    ok[i+j] = 1;
                    c[i+j] = 0;
                }
                else
                    break;
            }
            ans += sum;
        }

        else if (ok[i] == 0)
        {
            ans += p[i] * c[i];
            ok[i] = 1;
        }

    }

    cout << ans;
    return 0;
}