Cod sursa(job #1053384)

Utilizator VisanCosminVisan Tudor Cosmin VisanCosmin Data 12 decembrie 2013 18:41:47
Problema Energii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
unsigned long g,w,a[10000000],b[10000000],optim,castig,pierderi;
void citeste()
{
    unsigned i;
    ifstream f ("energii.in");
    f>>g;
    f>>w;
    for(i=0;i<g;i++)
    {
        f>>a[i];
        f>>b[i];
    }
    f.close();
}

void sorteaza()
{
    unsigned inv=1,aux,i;

        do{
        inv=0;
        for(i=0;i<g-1;i++)
            if(b[i]>b[i+1])
            {
                inv=1;
                aux=a[i];
                a[i]=a[i+1];
                a[i+1]=aux;
                aux=b[i];
                b[i]=b[i+1];
                b[i+1]=aux;
            }

        }while(inv);

}


int main()
{

citeste();
sorteaza();
ofstream h ("energii.out");
int i,j;
for(i=0;i<g-1&&(castig<=w);i++)
{   optim=i;
    for(j=i+1;j<g&&(castig<=w);j++)
    if((a[i]+castig<=a[j]+castig)&&(pierderi+b[i]>=pierderi+b[j]))
        optim=j;
    castig=castig+a[optim];
    pierderi=pierderi+b[optim];

}
h<<pierderi;

h.close();

    return 0;
}