Pagini recente » Cod sursa (job #435837) | Cod sursa (job #2661337) | Cod sursa (job #2081933) | Cod sursa (job #1977396) | Cod sursa (job #435921)
Cod sursa(job #435921)
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
typedef struct furcte{
uint32_t inaltime;
uint32_t greutate;
}fructe;
uint32_t sort_by_inaltime( const void *a, const void *b ){
fructe *ia = ( fructe * )a;
fructe *ib = ( fructe * )b;
return (uint32_t)( ib->inaltime - ia->inaltime );
/* returns negative if b > a
and positive if a > b. */
}
uint32_t sort_by_greutate( const void *a, const void *b ){
fructe *ia = ( fructe * )a;
fructe *ib = ( fructe * )b;
return (uint32_t)( ib->greutate - ia->greutate );
/* returns negative if b > a
and positive if a > b. */
}
int main(){
FILE * f = fopen( "gutui.in", "r" );
FILE * g = fopen( "gutui.out", "w" );
uint32_t N,H,U,i, masa = 0,m1=0,m2=0,m3=0,m4=0,m5=0,m6=0,m7=0,m8=0,m9=0,m10=0;
uint32_t h1=100,h2=100,h3=100,h4=100,h5=100,h6=100,h7=100,h8=100,h9=100,h10=100;
fructe x[100000];
if ( f == NULL ) /* eroare la deschiderea fisierului */
perror ("Error opening file");
else{
fscanf(f, "%u%u%u", &N, &H, &U ); /* nr de gutui, inaltimea maxima, cu cat creste distanta */
int q = 0;
for ( i = 0; i < N; i++) /* citirea elementelor structurii => greutatea si inaltimea unde se afla o gutuie */
fscanf(f, "%u%u", &x[i].inaltime, &x[i].greutate );
qsort(x, N, sizeof(fructe), sort_by_inaltime); /* sortez descrescator dupa inaltime */
// qsort(x, N, sizeof(fructe), sort_by_greutate);
for ( i = 0; i < N; i++)
printf("%u %u\n", x[i].inaltime, x[i].greutate);
int k = 0;
for( i = 0; i < N; i++ ){
if ( (x[i].inaltime>=91 && x[i].inaltime<=100) && (k*10 + x[i].inaltime <= 100)){
if ( h10 >= x[i].inaltime )
m10 += x[i].greutate;
else
m10 = x[i].greutate;
h10 = x[i].inaltime;
k++;
}
if ( (x[i].inaltime>=81 && x[i].inaltime<=90) && (k*10 + x[i].inaltime <= 100)){
if ( h9 >= x[i].inaltime )
m9 += x[i].greutate;
else
m9 = x[i].greutate;
h9 = x[i].inaltime;
k++;
}
if ( (x[i].inaltime>=71 && x[i].inaltime<=80) && (k*10 + x[i].inaltime <= 100)){
if ( h8 >= x[i].inaltime )
m8 += x[i].greutate;
else
m8 = x[i].greutate;
h8 = x[i].inaltime;
k++;
}
if ( (x[i].inaltime>=61 && x[i].inaltime<=70) &&(k*10 + x[i].inaltime <= 100)){
if ( h7 >= x[i].inaltime )
m7 += x[i].greutate;
else
m7 = x[i].greutate;
h7 = x[i].inaltime;
k++;
}
if ( (x[i].inaltime>=51 && x[i].inaltime<=60) && (k*10 + x[i].inaltime <= 100)){
if ( h6 >= x[i].inaltime )
m6 += x[i].greutate;
else
m6 = x[i].greutate;
h6 = x[i].inaltime;
k++;
}
if ( (x[i].inaltime>=41 && x[i].inaltime<=50) && (k*10 + x[i].inaltime <= 100) ){
if ( h5 >= x[i].inaltime )
m5 += x[i].greutate;
else
m5 = x[i].greutate;
h5 = x[i].inaltime;
k++;
}
if ( (x[i].inaltime>=31 && x[i].inaltime<=40) && (k*10 + x[i].inaltime <= 100)){
if ( h4 >= x[i].inaltime )
m4 += x[i].greutate;
else
m4 = x[i].greutate;
h4 = x[i].inaltime;
k++;
}
if ( (x[i].inaltime>=21 && x[i].inaltime<=30) && (k*10 + x[i].inaltime <= 100)){
if ( h3 >= x[i].inaltime )
m3 += x[i].greutate;
else
m3 = x[i].greutate;
h3 = x[i].inaltime;
k++;
}
if ( (x[i].inaltime>=11 && x[i].inaltime<=20) && (k*10 + x[i].inaltime <= 100)){
if ( h2 >= x[i].inaltime )
m2 += x[i].greutate;
else
m2 = x[i].greutate;
h2 = x[i].inaltime;
k++;
}
if ( (x[i].inaltime>=0 && x[i].inaltime<=10) && (k*10 + x[i].inaltime <= 100)){
if ( h1 >= x[i].inaltime )
m1 += x[i].greutate;
else
m1 = x[i].greutate;
h10 = x[i].inaltime;
k++;
}
}
/* i = 0;
while ( i < N ){
if ( (x[i].inaltime + k*U) <= H ){
masa += x[i].greutate;
k++;
}
i++;
}*/
masa = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10;
fprintf(g, "%u", masa);
}
fclose(f);
fclose(g);
return 0;
}