Pagini recente » Cod sursa (job #1444889) | Monitorul de evaluare | Cod sursa (job #2727097) | Cod sursa (job #1775359) | Cod sursa (job #2888645)
#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;
}