Cod sursa(job #18115)

Utilizator sarabogdanSara Nicolae Bogdan sarabogdan Data 18 februarie 2007 09:35:43
Problema Ghiozdan Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 1.33 kb
#include<stdio.h>

long n , G  , S , i , j , k;
long a[100001];
long sir[100001];


void poz(long li,long ls , long&k, long a[100001])
{
     int i = li, j=ls,c,i1=0,j1=-1,aux;
     while(i<j)
     {
               if (a[i]>a[j])
               {
                             a[j] = a[i];
                             a[i]=c;
                             c = i1;
                             i1 =-j1;
                             j1=-c;}
              
               
                                         
               i=i+i1;
               j=j+j1;
               
     }
     k = i;
}
void quick(long li,long ls)
{
     if (li<ls)
     {
               poz(li,ls,k,a);
               quick(li,k-1);
               quick(k+1,ls);
     }

}
int main()
{
    freopen("ghiozdan.in","r",stdin);
    freopen("ghiozdan.out","w",stdout);
    
    scanf("%ld%ld",&n,&G);
    for (i = 1 ; i <=n ; i++)
        scanf("%ld",&a[i]);
    quick(1,n);
   
        
    long nr = 0;
    for (i = n ; i >= 1 ; i--)
    {
        if (S+a[i]<=G)
        {
        S+= a[i];
        nr++;
        sir[nr] = a[i];
       
        }
    }
  
    printf("%ld %ld\n",S,nr);
    for (i = nr ; i >= 1 ; i--)
        printf("%ld\n",sir[i]);
                          
        
    return 0;
}