Cod sursa(job #1258405)

Utilizator sebastian123aldea sebastian sebastian123 Data 8 noiembrie 2014 20:35:20
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 1.96 kb
#include<stdio.h>
void inserare(int a[20],int n,int x)
{
    int i,c=0;
    if(x>a[n-1])
	{
		a[n]=x;
	}
	for(i=n-1;i>=0&&x<a[i];i--)
    {
        a[i+1]=a[i];
    }
    a[i+1]=x;
}
void inserare2(int a[],int n,int x)
{
	int i;
    for(i=n-1;i>=0&&x<a[i];i--)
    {
            a[i+1]=a[i];
    }
    a[i+1]=x;
}
void sortare(int a[],int n)
{
	int i,nb=1;
	for(i=1;i<n;i++)
	{
		inserare2(a,nb,a[i]);
		nb++;
	}
}

int main()
{
    int N,H,U,i,j,x,totalg=0,max1,max2,h[100],g[100],culese[100],index=0;
    FILE * pFile = fopen("gutui.in","r");
    FILE * dFile = fopen("gutui.out","w");
    fscanf(pFile,"%i",&N);
    fscanf(pFile,"%i",&H);
    fscanf(pFile,"%i",&U);
    for(i=0;i<N;i++)
    {
        fscanf(pFile,"%i",&h[i]);
        fscanf(pFile,"%i",&g[i]);
    }
    while(H>0)
    {
        max1=0;
        printf("Verific intre inaltimea maxima %i si inaltimea minima %i\n",H,H-U);
        for(i=0;i<N;i++)
        {
            if((h[i]>H-U)&&(h[i]<=H)&&(g[i]>max1))
            {
                max1=g[i];
                x=i;
            }
        }
        inserare(culese,index,max1);
        printf("gutuia maxima curenta %i\n",max1);
        index++;
        if(max1)
        {
            g[x]=0;
        }
        for(j=0;j<N;j++)   //?????? Inlocuieste forul cu while
        {
            max2=0;
            for(i=0;i<N;i++)
            {
                if((h[i]>H-U)&&(h[i]<=H)&&(g[i]>max2))
                {
                    max2=g[i];
                    x=i;
                }
            }
            if(max2>culese[0])
            {
                //Vectorul trebuie sa fie sortat dupa interschimbare
                culese[0]=max2;
                g[x]=0;
                sortare(culese,index);
            }
        }
        H=H-U;
    }
    for(i=0;i<index;i++)
    {
        totalg=totalg+culese[i];
    }
    printf("%i\n",totalg);
    fclose(pFile);
    fclose(dFile);
    return 0;
}