Pagini recente » Cod sursa (job #435262) | Cod sursa (job #2579053) | Cod sursa (job #2166045) | Cod sursa (job #1220048) | Cod sursa (job #439998)
Cod sursa(job #439998)
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main() //n nr gutui, h inaltimea maxima, u inaltime ridicare
{ FILE *f, *g;
long int n;
uint32_t h,u;
uint32_t hg[100000] ,wg[100000],v_suma[100000],v_h[100000],v[100000];
long int i;
long int j;
long int x;
int ok;
uint32_t aux;
uint32_t maxh,maxw;
long int contor=0;
uint32_t min,max=0;
f=fopen("gutui.in","r");
g=fopen("gutui.out","w");
fscanf(f,"%ld",&n);
fscanf(f,"%d",&h);
fscanf(f,"%d",&u);
for(i=0;i<n;i++)
{fscanf(f,"%d",&hg[i]);
fscanf(f,"%d",&wg[i]);
if(max<wg[i]) max=wg[i];
v[i]=0;}
for (i=n;i>0;i--)
for(j=1;j<=i;j++)
if(hg[j-1]<hg[j]){
aux=hg[j-1];
hg[j-1]=hg[j];
hg[j]=aux;
aux=wg[j-1];
wg[j-1]=wg[j];
wg[j]=aux;
}
for(i=0;i<n;i++)
{ ok=0;
printf("%d ",hg[i]);
printf("%d ",wg[i]);
printf("\n");}
v_suma[0]=wg[0];
v_h[0]=h-u;
for(i=1;i<=n;i++) {
if(hg[i]<=h){
printf("%d ",v_suma[i-1]);
// printf("%d ",v_h[i-1]);
if(hg[i]<=v_h[i-1])
v_suma[i]=v_suma[i-1]+wg[i];
else
{min=max;
for(j=0;j<i;j++)
if(v[j]==0)
if(min>wg[j]){min=wg[j];
x=j;}
// printf("min=%d ",min);
if(min<wg[i]){
v[x]=1;
v_suma[i]=v_suma[i-1]+wg[i]-min;
}
else {v[i]=1;
v_suma[i]=v_suma[i-1]; }
ok=1;
}
}
if((v_h[i-1]>0)&&(ok==0))
v_h[i]=v_h[i-1]-u;
else v_h[i]=v_h[i-1];
}
/*for(i=0;i<n;i++)
printf(" %d ",v[i]);*/
fprintf(g,"%d",v_suma[n-1]);
fclose(f);
fclose(g);
// system("PAUSE");
return 0;
}