Pagini recente » Cod sursa (job #2772555) | Cod sursa (job #42539) | Cod sursa (job #2710861) | Cod sursa (job #447607) | Cod sursa (job #440900)
Cod sursa(job #440900)
#include <stdio.h>
#include <stdlib.h>
typedef struct gutui {
int height;
int weight;
int pasi;
} Gutui;
int compare(const void *a, const void *b) {
Gutui* ob1 = (Gutui*) a;
Gutui* ob2 = (Gutui*) b;
if (ob1->pasi != ob2->pasi) {
if (ob1->pasi < ob2->pasi) return -1;
else return 1;
}
if (ob1->pasi == ob2->pasi) {
if (ob1->weight < ob2->weight) return 1;
else return -1;
}
return 0;
}
int main()
{
int N, H, U;
int i, j, greutate = 0;
FILE *f, *g;
Gutui v[100];
f = fopen("gutui.in", "r");
g = fopen("gutui.out", "w");
fscanf(f , "%d%d%d", &N, &H, &U);
for (i=0; i<N; i++)
{
fscanf(f, "%d %d", &v[i].height, &v[i].weight);
}
for (i=0; i<N; i++)
{
v[i].pasi = (H - v[i].height)/U + 1;
}
qsort(v, N, sizeof(Gutui), compare);
for (i=0; i<N; i++)
{
printf("%d ",v[i].pasi);
}
printf("\n");
for (i=0; i<N; i++)
{
printf("%d ",v[i].weight);
}
// greutate = v[0].weight;
int k=0;
int nr = v[0].pasi;
for (i=0; i<N; i++)
{
if (v[i].pasi - k > 0)
{
if (i==0)
greutate += v[i].weight;
else if (v[i].pasi != v[i-1].pasi)
{
greutate += v[i].weight;
}
else if (v[i].pasi == v[i-1].pasi)
{
if (nr > 0)
{
greutate += v[i].weight;
nr = nr + v[i+1].pasi - v[i].pasi - 1;
}
}
k++;
/* for (i=0; i<N; i++)
{
v[i].pasi -= 1;
} */
}
}
printf("greutatea max este %d", greutate);
getchar();
return 0;
}