Pagini recente » Cod sursa (job #945961) | Cod sursa (job #27756) | Cod sursa (job #3166485) | Cod sursa (job #232426) | Cod sursa (job #2835684)
// https://www.infoarena.ro/problema/carnati
#include <iostream>+
using namespace std;
#include <fstream>
//ofstream fout("carnati.in");
ifstream fin("carnati.in");
ofstream fout("carnati.out");
int main() {
int cSalariuUnitar, pretFix=0, tTimpl[2001], pIpretMax[2001], nOameni, timpInceput, timpSfarsit, profitUnitar=0;
int profitTotal=0, pMax=0, timpInceputMin=0, timpSfarsitMax=0, profitTotalMaxim = 0, pretFixOptim = 0, timpInceputOptim = 0, timpSfarsitOptim = 0, varlorileAuFostInitializate = false;
fin >> nOameni >> cSalariuUnitar;
for (int i=1; i<=nOameni; i++) {
fin >> tTimpl[i] >> pIpretMax[i];
if (i == 1) {
timpInceputMin = tTimpl[i];
timpSfarsitMax = tTimpl[i];
pMax = pIpretMax[i];
} else {
if (tTimpl[i] < timpInceputMin) {
timpInceputMin = tTimpl[i];
} else if (tTimpl[i] > timpInceputMin) {
timpSfarsitMax = tTimpl[i];
}
if (pIpretMax[i] > pMax) {
pMax = pIpretMax[i];
}
}
}
cout << "\n";
// timpInceput = timpInceputMin;
// timpSfarsit = timpSfarsitMax;
//
for (timpSfarsit = timpSfarsitMax; timpSfarsit >= timpInceputMin; timpSfarsit--) {
for (timpInceput = timpInceputMin; timpInceput <= timpSfarsitMax; timpInceput++) {
if (timpInceput > timpSfarsit) {
break;
}
// Modificare pret
for (pretFix = pMax; pretFix > 0; pretFix--) {
profitTotal = 0;
// Calculare profit
for (int i=1; i<=nOameni; i++) {
// cout << tTimpl[i] << " " << pIpretMax[i]<<" ";
// int tTimplI = tTimpl[i], pIpretMaxI = pIpretMax[i];
profitUnitar = 0;
if (pIpretMax[i] >= pretFix && tTimpl[i] >= timpInceput && tTimpl[i] <= timpSfarsit) {
profitUnitar = pretFix;
}
profitTotal = profitTotal + profitUnitar;
// cout << profitUnitar<<"\n";
}
profitTotal = profitTotal - cSalariuUnitar * (timpSfarsit - timpInceput + 1);
// cout << profitTotal<<" ";
if (varlorileAuFostInitializate == false) {
profitTotalMaxim = profitTotal;
pretFixOptim = pretFix;
timpInceputOptim = timpInceput;
timpSfarsitOptim = timpSfarsit;
varlorileAuFostInitializate = true;
}
if (profitTotal > profitTotalMaxim) {
profitTotalMaxim = profitTotal;
pretFixOptim = pretFix;
timpInceputOptim = timpInceput;
timpSfarsitOptim = timpSfarsit;
}
}
}
}
cout << "\n";
cout << profitTotalMaxim <<", p = "<<pretFix<<", orar: "<<timpInceputOptim<<" - "<<timpSfarsitOptim;
fout << profitTotalMaxim;
cout << "\n";
return 0;
}