Pagini recente » Cod sursa (job #1465903) | Cod sursa (job #425111) | Cod sursa (job #916169) | Cod sursa (job #2873160) | Cod sursa (job #2663270)
#include <stdio.h>
#include <stdlib.h>
int v[100], sume[1000000], out[6];
void quicksort(int min, int max){
int b, e, piv, aux;
piv = sume[(min + max) / 2];
b = min;
e = max;
while(sume[b] < piv){
b++;
}
while(sume[e] > piv){
e--;
}
while(b < e){
aux = sume[b];
sume[b] = sume[e];
sume[e] = aux;
do{
b++;
}while(sume[b] < piv);
do{
e--;
}while(sume[e] > piv);
}
if(min < e){
quicksort(min, e);
}
if((e + 1) < max){
quicksort(e + 1, max);
}
}
int main()
{
FILE *fin, *fout;
int n, s, i, j, ind, is, ci, cj;///am tinut inca un indice pentru sume[] ,deoarece mi se pare mai simplu de observat si implementat
fin=fopen("loto.in", "r");
fscanf(fin, "%d%d", &n, &s);
for(i = 0; i < n; i++){
fscanf(fin, "%d", &v[i]);
}
fclose(fin);
is = 0;
for(i = 0; i < n; i++){
for(j = i; j < n; j++){
for(ind = j; ind < n; ind++){
sume[is] = v[i] + v[j] + v[ind];
is++;
}
}
}
quicksort(0, is - 1);
i = 0;
j = is - 1;
while((i <= j) && (s != (sume[i] + sume[j]))){
if(s < (sume[i] + sume[j])){
j--;
}else{
i++;
}
}
fout=fopen("loto.out", "w");
if(i <= j){
ci = i;
cj = j;
is = 0;
for(i = 0; i < n; i++){
for(j = i; j < n; j++){
for(ind = j; ind < n; ind++){
if((v[i] + v[j] + v[ind]) == sume[ci]){
out[0] = i;
out[1] = j;
out[2] = ind;
}
if((v[i] + v[j] + v[ind]) == sume[cj]){
out[3] = i;
out[4] = j;
out[5] = ind;
}
is++;
}
}
}
for(i = 0; i < 6; i++){
sume[i] = out[i];
}
quicksort(0, 5);
fprintf(fout, "%d %d %d %d %d %d", v[sume[0]], v[sume[1]], v[sume[2]], v[sume[3]], v[sume[4]], v[sume[5]]);
}else{
fprintf(fout, "-1");
}
fclose(fout);
return 0;
}