Cod sursa(job #1679923)

Utilizator antanaAntonia Boca antana Data 8 aprilie 2016 13:10:34
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <cstdio>
#include<algorithm>
#define MAX 100
using namespace std;
int sume[MAX*MAX*MAX+1];
int v[MAX+1];
int main()
{
    freopen("loto.in", "r", stdin);
    freopen("loto.out", "w", stdout);
    int i, j, k, sum, m=0, n, s1 ,s2, f=0;
    scanf("%d%d", &n, &sum);
    for(i=1;i<=n;i++)
        scanf("%d", &v[i]);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++)
                if(v[i]+v[j]+v[k]<sum)
                    sume[++m]=v[i]+v[j]+v[k];
    sort(sume+1, sume+m+1);
    i=1;
    j=m;
    s1=s2=-1;
    while(i<=j)
    {
        while(sum-sume[j]<sume[i]&&j>0)
            j--;
        if(sum==sume[j]+sume[i])
        {
            s1=sume[j];
            s2=sume[i];
            i=m;j=1;
        }
        i++;
    }
    if(s1==s2&&s2==-1)
        printf("-1");
    else
    {
        for(i=1;i<=n && f==0;i++)
            for(j=1;j<=n && f==0;j++)
                for(k=1;k<=n && f==0;k++)
                    if(v[i]+v[j]+v[k]==s1)
                    {
                        printf("%d %d %d ", v[i], v[j], v[k]);
                        f=1;
                    }
        f=0;
        for(i=1;i<=n && f==0;i++)
            for(j=1;j<=n && f==0;j++)
                for(k=1;k<=n && f==0;k++)
                    if(v[i]+v[j]+v[k]==s2)
                    {
                        printf("%d %d %d ", v[i], v[j], v[k]);
                        f=1;
                    }
    }
    return 0;
}