Cod sursa(job #28463)

Utilizator vlad2179Popescu Vlad Alexandru vlad2179 Data 7 martie 2007 21:01:15
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
int g,w;long long en,cost;
struct generator
{
 int e,c;
};
generator ge[1001];
void citeste(){
 FILE *f=fopen("energii.in","rt");
 fscanf(f,"%d %d",&g,&w);
 for(int i=1;i<=g;i++){
  fscanf(f,"%d %d",&ge[i].e,&ge[i].c);
 }
}
void ordoneaza(){
 int i,j,aux;
 for(i=1;i<=g;i++){
  for(j=i+1;j<=g;j++){
   if(ge[i].c>ge[j].c){
    aux=ge[i].c;ge[i].c=ge[j].c;ge[j].c=aux;
    aux=ge[i].e;ge[i].e=ge[j].e;ge[j].e=aux;
    }
   else if(ge[i].c==ge[j].c){
     if(ge[i].e>ge[j].e){
       aux=ge[i].e;ge[i].e=ge[j].e;ge[j].e=aux;
       aux=ge[i].c;ge[i].c=ge[j].c;ge[j].c=aux;
       }
     }
   }
  }
 }
void rezolva(){
 int i=1,j=1;
 while(en<=w){
  en+=ge[i].e;cost+=ge[i].c;
  i++;
 }
 i--;
 for(j=i;j>=1;j--){
  if(en-ge[j].e>=w) {
    en-=ge[j].e;cost-=ge[j].c;
  }
 }
}
void scrie(){
 FILE *g=fopen("energii.out","wt");
 if(cost>=w) fprintf(g,"%lld",cost);
 else fprintf(g,"%d",0);
}

int main(){
 citeste();
 ordoneaza();
 rezolva();
 scrie();
 return 0;
}