Cod sursa(job #1003303)

Utilizator Kzsolty96SAPIENTIA OSZTIAN DANIEL KUCSVAN Kzsolty96 Data 30 septembrie 2013 12:37:43
Problema Ghiozdan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.93 kb
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<limits.h>

using namespace std;

vector <int> Ghiozdan,Obj;
long n,gr;
long a[20001][20001];

/*void rez(int i,long Gmax,int Nmin)
{
    if(i<0)
        return;
    int gre=0,nr=0;
    for(;i>=0 && gre+Obj[i]<=gr;i--)
    {
        gre+=Obj[i];
        Ghiozdan.push_back(Obj[i]);
        nr++;
    }
    if(gre>Gmax)
        rez(i,gre,nr)

}*/


void din()
{
    int i,j,kor=0,Gmax=0,Nmin=INT_MAX,indexi,indexj,indexkor;
    for(i=0;i<n;i++)
        for(j=0;j<i;j++)
        {
            a[i][j]=Obj[i]+Obj[j];
            if(a[i][j]>Gmax && a[i][j]<=gr)
            {
                Gmax=a[i][j];
                Nmin=2+kor;
                indexi=i;
                indexj=j;
                indexkor=kor;
            }
        }
    kor++;
    while(kor<n)
    {
        for(i=kor;i<n;i++)
            for(j=kor;j<i;j++)
            {
                a[i][j]=a[i][j-1]+Obj[j];
                if(a[i][j]>Gmax && a[i][j]<=gr)
                {
                    Gmax=a[i][j];
                    Nmin=2+kor;
                    indexi=i;
                    indexj=j;
                    indexkor=kor;
                }
            }
        kor++;
    }
    if(indexkor==0)
        printf("%d %d\n%ld\n%ld",Gmax,Nmin,Obj[indexi],Obj[indexj]);
    else
    {
        printf("%d %d\n%ld\n",Gmax,Nmin,Obj[indexi]);
        for(i=indexj;indexkor+1>=0;indexkor--,i--)
            printf("%ld\n",Obj[i]);
    }


}

int main()
{
    long i;
    int s;
    freopen("ghiozdan.in","r",stdin);
    freopen("ghiozdan.out","w",stdout);
    scanf("%ld %ld",&n,&gr);
    for(i=0;i<n;i++)
    {
        scanf("%d",&s);
        Obj.push_back(s);
    }
    sort(Obj.begin(),Obj.end());
    din();
    /*for(i=0;i<=n;i++)
    {
        for(int j=0;j<=n;j++)
            printf("%ld ",a[i][j]);
        printf("\n");
    }*/
}