Cod sursa(job #3134776)

Utilizator CristiL75Cristi Latcu CristiL75 Data 30 mai 2023 21:40:30
Problema Problema rucsacului Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include<stdio.h>
#include<stdlib.h>
int N,G,W[5000],P[5000];
typedef struct{
    int loc;
    int val;
}eficenta;
eficenta v[5000];
void ordonare()
{
    int i,j;
    eficenta aux;
    for(i=1;i<=N;i++)
        for(j=i+1;j<=N;j++)
        {
            if(v[i].val>v[j].val)
            {  
                aux=v[i];
                v[i]=v[j];
                v[j]=aux;
            }
        }
}
void citire()
{
    int i;
    FILE *fis;
    fis=fopen("rucsac.in","rt");
    if(fis==NULL)
    {
        printf("eroare a fisierului");
        exit(EXIT_FAILURE);
    }
    fscanf(fis,"%d",&N);
    fscanf(fis,"%d",&G);
    for(i=1;i<=N;i++)
    {
        fscanf(fis,"%d",&W[i]);
        fscanf(fis,"%d",&P[i]);
        v[i].val=W[i]/P[i];
        v[i].loc=i;
    }
}
int greedy()
{
    int i=1,Po=0;
    ordonare();
    i=1;
    if(W[v[1].loc]>G)
    Po=0;
    else
    while(i<=N&&G>=0)
    {
        Po=Po+P[v[i].loc];
        G=G-W[v[i].loc];
        i++;
    }
    return Po;
}
int main()
{
    citire();
    FILE *out;
    out=fopen("rucsac.out","wt");
    fprintf(out,"%d",greedy());
    return 0;
}