Cod sursa(job #2500114)

Utilizator andreitudorpAndrei Tudor Popescu andreitudorp Data 27 noiembrie 2019 11:42:12
Problema Branza Scor 0
Compilator cpp-64 Status done
Runda guritza Marime 1.17 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 = 0;

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]);
            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);
                    c[i+j] = 0;
                    ok = 1;
                }
                else
                    break;
            }
            ans += sum;
            if(ok == 1)
            i += j;
            if(ok == 0)
            i += 2;
        }

        else
        {
            ans += p[i] * c[i];
        }

    }

    cout << ans;
    return 0;
}