Cod sursa(job #1107921)

Utilizator selaruSelaru Alexandru selaru Data 14 februarie 2014 23:22:40
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<stdio.h>

void sortare(int a[100][2],int n)
{
     int i,j,aux=0;
     for(i=0;i<n-1;i++)
       for(j=i+1;j<n;j++)
       {
          if(a[i][1]<a[j][1])
          {
             aux=a[i][1];
             a[i][1]=a[j][1];
             a[j][1]=aux;
             aux=a[i][0];
             a[i][0]=a[j][0];
             a[j][0]=aux;
          }
          else if(a[i][1]==a[j][1])
                  if(a[i][0]>a[j][1])
                  {
                      aux=a[i][1];
                      a[i][1]=a[j][1];
                      a[j][1]=aux;
                      aux=a[i][0];
                      a[i][0]=a[j][0];
                      a[j][0]=aux;
                  }  
       }                 
}
int main()
{   
    int n=0,G=0,a[100][2],i,j,sum,b=0,max,val;
    FILE *f,*g;
    f=fopen("rucsac.in","rb");
    g=fopen("rucsac.out","wb");   
    fscanf(f,"%i",&n);
    fscanf(f,"%i",&G);
    for(i=0;i<n;i++)
     for(j=0;j<2;j++)
       fscanf(f,"%i",&a[i][j]);
    sortare(a,n);
    i=0;
    val=0;
    sum=0;
    while(val<G)
    {  val+=a[i][0];          
       sum+=a[i][1];
       i++;
    }
    fprintf(g,"%i",sum);
    return 0;
}