Cod sursa(job #3184500)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 16 decembrie 2023 10:24:15
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("loto.in");
ofstream G("loto.out");
int n,s,a[100],i,j,k,l,t,r;
int main()
{
    for(F>>n>>s;i<n;F>>a[i++]);
    for(sort(a,a+n),i=0;i<n&&6*a[i]<=s;++i)
        if(a[i]+5*a[n-1]>=s)
            for(j=i;j<n&&a[i]+5*a[j]<=s;++j)
                if(a[i]+a[j]+4*a[n-1]>=s)
                    for(k=j;k<n&&a[i]+a[j]+4*a[k]<=s;++k)
                        if(a[i]+a[j]+a[k]+3*a[n-1]>=s)
                            for(l=k;l<n&&a[i]+a[j]+a[k]+3*a[l]<=s;++l)
                                if(a[i]+a[j]+a[k]+a[l]+2*a[n-1]>=s)
                                    for(t=l,r=n-1;t<n&&a[i]+a[j]+a[k]+a[l]+2*a[t]<=s;++t)
                                        if(a[i]+a[j]+a[k]+a[l]+a[t]+a[n-1]>=s&&(r=upper_bound(a+t,a+r+1,s-a[i]-a[j]-a[k]-a[l]-a[t])-a-1,r>=t&&a[i]+a[j]+a[k]+a[l]+a[t]+a[r]==s))
                                            return G<<a[i]<<' '<<a[j]<<' '<<a[k]<<' '<<a[l]<<' '<<a[t]<<' '<<a[r],0;
    return G<<-1,0;
}