Pagini recente » Cod sursa (job #2610021) | Cod sursa (job #738699) | Cod sursa (job #1064682) | Cod sursa (job #450096) | Cod sursa (job #1016193)
#include <stdio.h>
struct gutui
{
int greutate,inaltime;
};
int N,H,U,greutateFinal=0;
struct gutui *v;
void Date()
{
int i;
FILE *f = fopen("gutui.in", "r");
fscanf(f, "%d%d%d",&N,&H,&U);
v = (struct gutui*)malloc(N*sizeof(struct gutui));
for(i = 0; i < N; ++i)
{
fscanf(f, "%d", &v[i].inaltime);
fscanf(f, "%d", &v[i].greutate);
}
fclose(f);
}
void sortare()
{
int i,ok=1,n = N,retineG,retineH;
while(ok != 0)
{
ok = 0;
for(i = 0; i < n-1; i++)
{
if( v[i].inaltime < v[i+1].inaltime )
{
retineH = v[i].inaltime;
retineG = v[i].greutate;
v[i].inaltime = v[i+1].inaltime;
v[i].greutate = v[i+1].greutate;
v[i+1].inaltime = retineH;
v[i+1].greutate = retineG;
ok = 1;
}
}
n--;
}
}
void cresteH(int k)
{
int i;
for(i = k; i < N; i++)
v[i].inaltime += U;
}
void scrieDate()
{
FILE *f = fopen("gutui.out","w");
fprintf(f,"%d",greutateFinal);
fclose(f);
}
int main()
{
int i,k=0;
Date();
sortare();
while( k < N )
{
if( v[k].inaltime <= H)
{
greutateFinal += v[k].greutate;
cresteH(k+1);
}
k++;
}
scrieDate();
return 0;
}