Pagini recente » Cod sursa (job #2248301) | Cod sursa (job #257722) | Cod sursa (job #2120202) | Cod sursa (job #3234347) | Cod sursa (job #434690)
Cod sursa(job #434690)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int compare(const void *a, const void *b)
{
if(*(int*)a>=*(int*)b)
return -1;
else
return 1;
}
typedef struct{
int g,h;
}gutui;
int main()
{
FILE *f;
gutui a[10000];
int n,h,u;
f=fopen("gutui.in","r");
if(f!=NULL)
{
fscanf(f,"%i %i %i",&n,&h,&u);
for(int i=0;i<n;i++)
fscanf(f,"%i %i",&a[i].h,&a[i].g);
fclose(f);
}
printf("\nU este:%i",u);
printf("\nMatricea initiala este:");
for(int i=0;i<n;i++)
{
printf("\n");
printf("%i %i",a[i].h,a[i].g);
}
qsort(a,n,sizeof(gutui),compare);
printf("\nColectia sortata:");
for(int i=0;i<n;i++)
{
printf("\n");
printf("%i %i",a[i].h,a[i].g);
}
int max=0,h_curenta[10000],marcaje[10000];
for(int i=0;i<10000;i++)
marcaje[i]=0;
for(int i=0;i<n;i++)
{
//h_curenta+=a[i].h;
marcaje[i]+=a[i].h;
printf("h_curenta:%i\n",marcaje[i]);
if(marcaje[i-1]>h)
{
marcaje[i-1]=0;
continue;
}
else
{
max+=a[i].g;
marcaje[i+1]+=u;
}
}
f=fopen("gutui.out","w");
fprintf(f,"%i",max);
fclose(f);
//getch();
}