Pagini recente » Cod sursa (job #1809734) | Cod sursa (job #2499561) | Cod sursa (job #2046452) | Cod sursa (job #2298303) | Cod sursa (job #907640)
Cod sursa(job #907640)
//energii - Infoarena
#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int energieCost(char mod, int index, int energie, int cost);
void afisare(int afiseaza);
int main()
{
int generatoare, energieNecesara;
int costMinim(32000), costCurent(32000);
in>>generatoare>>energieNecesara;
for(int index=0;index<generatoare;index++)
{
int energie, cost;
in>>energie>>cost;
energieCost('w',index,energie,cost);
}
for(int index=0;index<generatoare;index++)
{
if(energieCost('e',index,0,0)>=energieNecesara) costCurent=energieCost('c',index,0,0);
if(costCurent<costMinim) costMinim=costCurent;
}
costCurent=0;
long int sumaEnergie(0);
for(int index=0;index<generatoare;index++)
{
sumaEnergie+=energieCost('e',index,0,0);
costCurent+=energieCost('c',index,0,0);
if(energieNecesara<=sumaEnergie && costCurent<=costMinim) costMinim=costCurent;
if(energieNecesara>sumaEnergie && index==generatoare-1) costMinim=-1;
}
for(int index=0;index<generatoare;index++)
{
sumaEnergie=0;
costCurent=0;
int amestecat1=0 + (rand() % (generatoare));
int amestecat2=0 + (rand() % (generatoare));
sumaEnergie=sumaEnergie+energieCost('e',amestecat1,0,0)+energieCost('e',amestecat2,0,0);
costCurent=costCurent+energieCost('c',amestecat1,0,0)+energieCost('c',amestecat2,0,0);
if(energieNecesara<=sumaEnergie && costCurent<=costMinim) costMinim=costCurent;
}
afisare(costMinim);
}
int energieCost(char mod, int index, int energie, int cost)
{
int date[1001][2];
if(mod=='w') {date[index][0]=energie; date[index][1]=cost; return 0;}
if(mod=='e') {return date[index][0];}
if(mod=='c') {return date[index][1];}
}
void afisare(int afiseaza)
{
out<<afiseaza;
}