Pagini recente » Cod sursa (job #1564139) | Cod sursa (job #1959794) | Cod sursa (job #2606780) | Cod sursa (job #591704) | Cod sursa (job #433779)
Cod sursa(job #433779)
#include <stdio.h>
#include <stdlib.h>
typedef unsigned long long int uint64_t;
int main() {
FILE *fi=fopen("gutui.in","r");
FILE *fo=fopen("gutui.out","w");
typedef struct gutui {
int h,g;
} Gutui;
Gutui *g,aux;
int cules;
uint64_t n,h,u,i,j,total=0;
fscanf(fi,"%llu %llu %llu",&n,&h,&u);
g=(Gutui*)calloc(n,sizeof(Gutui));
for (i=0;i<n;i++) {
fscanf(fi,"%d %d",&g[i].h,&g[i].g);
}
//sortez dupa greutate
//ce e la egalitate, sortez dupa momentul disparitiei
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if ((h-g[j].h)/u<(h-g[i].h)/u) {
aux=g[i];
g[i]=g[j];
g[j]=aux;
}
else if ((h-g[j].h)/u==(h-g[i].h)/u && g[j].g>g[i].g) {
aux=g[i];
g[i]=g[j];
g[j]=aux;
}
for (i=0;i<n;i++) {
cules=0;
if (g[i].h<=h) {
total+=g[i].g;
cules=1;
}
if (cules)
for (j=i+1;j<n;j++)
g[j].h+=u;
}
fprintf(fo,"%llu",total);
fclose(fi);
fclose(fo);
return 0;
}