Cod sursa(job #255435)

Utilizator alexch16Chelariu Alexandru alexch16 Data 9 februarie 2009 19:12:47
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>

#define MAX 101
#define INFILE "loto.in"
#define OUTFILE "loto.out"

int n, poz2;
long S;
long nr[MAX], final[MAX];

void citire();
void rez();
void ordoneaza();

int main() {
	freopen(OUTFILE, "w", stdout);

	citire();
	rez();
	for(int i=poz2-1; i>=1; i--)
		printf("%ld ", final[i]);

	printf("\n");

	fclose(stdout);
	return 0;
}

void citire() {
	freopen(INFILE, "r", stdin);
	scanf("%d %ld", &n, &S);

	for(int i=1; i<=n; i++) {
		scanf("%d", &nr[i]);
	}
	fclose(stdin);
}

void ordoneaza() {
	int ok, i, aux;

	do {
		ok = 1;
		for(i=1; i<n; i++)
			if(nr[i]<nr[i+1]) {
				aux = nr[i];
				nr[i] = nr[i+1];
				nr[i+1] = aux;

				ok = 0;
			}
	}while(!ok);
}

void rez() {
	int poz, c, i;
	poz = poz2 = 1;

	ordoneaza();

	while(S) {
		c = (float)S/(float)nr[poz] - 1;

		if(nr[poz] != 1)
			for(i=1; i<=c; i++) {
				final[poz2++] = nr[poz];
				S -= nr[poz];
			}
		else
			while(S) {
				final[poz2++] = nr[poz];
				S -= nr[poz];
			}

		poz++;
	}
}