Pagini recente » Statistici Giurgea Alexandru (Alexandru05) | Cod sursa (job #2137178) | Cod sursa (job #1517840) | Cod sursa (job #2386087) | Cod sursa (job #48832)
Cod sursa(job #48832)
// Problema ghiozdan...
// Se face cu o sortare banala ???
#include <stdio.h>
#define MAX 20001
int obj[MAX];
int pus[MAX];
int pozitie( int st, int dr )
{
int piv = obj[st];
int aux;
int i = st-1, j = dr+1;
do{
do{ i++; }while( obj[i] > piv );
do{ j--; }while( obj[j] < piv );
if( i < j )
{
aux = obj[i];
obj[i] = obj[j];
obj[j] = aux;
}
}while( i < j);
return j;
}
int qs( int st, int dr )
{
if( st == dr ) return 0;
int m = pozitie( st, dr );
qs( st, m );
qs( m+1, dr );
}
int main()
{
freopen( "ghiozdan.in", "rt", stdin );
int n, i;
long g;
scanf( "%d %ld", &n, &g );
for( i=1; i<=n; i++ ) scanf( "%d", &obj[i] );
qs( 1, n );
fclose( stdin );
int Nmin = 0;
long Gmax = 0;
for( i =1; i<=n; i++ )
{
if( Gmax + obj[i] <= g ) { Gmax += obj[i]; Nmin++; pus[Nmin] = obj[i]; }
if( Gmax == g ) break;
}
freopen( "ghiozdan.out", "wt", stdout );
printf( "%ld %d\n", Gmax, Nmin );
for( i=1; i<=Nmin; i++ ) printf( "%d\n", pus[i] );
fclose( stdout );
return 0;
}