Cod sursa(job #2888645)

Utilizator NefelibataAnton Marius Alexandru Nefelibata Data 11 aprilie 2022 18:16:27
Problema Branza Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream f("branza.in");
    ofstream o("branza.out");
    int N, S, T, pret_total = 0, branza = 0;
    f>>N>>S>>T;
    int lista_cost[N];
    int lista_cantitate[N];
    int lista_rezolvat[N];
    int lista_rezolvat_pret[N];

    for (int i = 0; i < N; i++) {
        f>>lista_cost[i]>>lista_cantitate[i];
        lista_rezolvat[i] = 0;
    }

    for (int i = 0; i < N; i++) {
        if (branza > 0) {
            pret_total += S * branza;
            branza -= lista_cantitate[i];
        } else {
            pret_total += lista_cantitate[i] * lista_cost[i];
        }
        for (int j = i+1; j < i+1+T && j < N; j++) {
            if (lista_cost[j]*lista_cantitate[j] > lista_cost[i]*lista_cantitate[j] + S * (j-i) * lista_cantitate[j]) {
                if (lista_rezolvat[j] == 0 || lista_rezolvat_pret[j] > lista_cost[i]*lista_cantitate[j] + S * (j-i) * lista_cantitate[j]) {
                    lista_rezolvat[j] = 1;
                    lista_rezolvat_pret[j] = lista_cost[i]*lista_cantitate[j] + S * (j-i) * lista_cantitate[j];
                    branza += lista_cantitate[j];
                    pret_total += lista_cost[i]*lista_cantitate[j];
                }
            } else {
                break;
            }
        }
    }

    o<<pret_total;
    o.close();
    f.close();

    return 0;
}