Pagini recente » Statistici Bologa Dragos (BologaDragos) | Cod sursa (job #702905) | Cod sursa (job #1544993) | Cod sursa (job #253784) | Cod sursa (job #171060)
Cod sursa(job #171060)
#include <stdio.h>
//#include <iostream.h>
//#include <fstream.h>
//#include <conio.h>
long int matr[1001][2],gen,w;
float vector[1001];
void date(){
long int i;
//ifstream fin("energii.in");
//fin>>gen;
//fin>>w;
FILE *fin;
fin = fopen("energii.in", "rt");
fscanf(fin,"%ld %ld\n",&gen,&w);
for(i=0;i<gen;i++)
{
fscanf(fin,"%ld %ld\n",&matr[i][0],&matr[i][1]);
//fin>>matr[i][0];
//fin>>matr[i][1];
//cout<<matr[i][1]<<" ";
vector[i]=(float) matr[i][0]/matr[i][1];
}
//cout<<endl;
//fin.close();
}
long int poz(long int li,long int ls){
long int c,i1=0,j1=-1;
while(li<ls){
if(vector[li]<vector[ls]){
c=vector[li];
vector[li]=vector[ls];
vector[ls]=c;
c=matr[li][0];
matr[li][0]=matr[ls][0];
matr[ls][0]=c;
c=matr[li][1];
matr[li][1]=matr[ls][1];
matr[ls][1]=c;
c=i1;
i1=-j1;
j1=-c;
}
li+=i1;
ls+=j1;
}
return li;
}
void sortare(long int li,long int ls){
long int k;
if(li<ls){
k=poz(li,ls);
sortare(li,k-1);
sortare(k+1,ls);
}
}
/*void afisare(){
int i;
for(i=0;i<gen;i++){
cout<<matr[i][0]<<" "<<matr[i][1]<<endl;
}
}
*/
int main(){
long int suma=0,cost=0;
long int i;
//clrscr();
date();
sortare(0,gen-1);
for(i=0;i<gen;i++){
suma+=matr[i][0];
cost+=matr[i][1];
if(suma>=w)break;
}
if(suma<w)cost=-1;
FILE *fout;
fout = fopen("energii.out", "w+");
fprintf(fout,"%ld \n",cost);
return 0;
}