Cod sursa(job #1743077)

Utilizator stefanik_robertzRobert S stefanik_robertz Data 17 august 2016 15:42:29
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <iostream>
using namespace std;
int v[100],n,s,a[7],sum;
ifstream f("loto.in");
ofstream g("loto.out");
bool print;
void scan(){
    f>>n>>s;
    for(int i=0;i<n;i++)
    {
        f>>v[i];
    }
    f.close();
}
void qk(int ci,int cf){
    int i=ci,j=cf,m=(ci+cf)/2;
    while(i<j){
        while(v[i]<v[m])i++;
        while(v[j]>v[m])j--;
        if(i<j){
            int aux=v[i];
            v[i]=v[j];
            v[j]=aux;
            i++;
            j--;
        }
    }
    if(i<cf)qk(i,cf);
    if(j>ci)qk(j,ci);
}
void afisare(){
    for(int i=1;i<7;i++)
    {
        g<<v[a[i]]<<" ";
    }
}
void bk(int k){
    if(k<=6&&!print){
        for(int i=a[k-1];i<n;i++){
            a[k]=i;
            sum+=v[i];
            if(sum<=s&&v[n-1]*(6-k)+sum>=s){
                if(k==6&&sum==s){print=true;afisare();}
                else bk(k+1);
            }
            sum-=v[i];
        }
    }
}
int main()
{
    scan();
    qk(0,n-1);
    bk(1);
    if(!print)g<<"-1";
    return 0;
}