Cod sursa(job #2299941)

Utilizator verde.cristian2005Verde Flaviu-Cristian verde.cristian2005 Data 10 decembrie 2018 16:30:40
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
const int MOD=666013;
vector <int> ceva[MOD];
int a[101];
bool verif(int poz,int val)
{
    for(int i=0; i<ceva[poz].size(); i++)
        if(ceva[poz][i]==val)
            return 1;
    return 0;
}
int main()
{
    int n,s,i,j,l,x=-1,cnt=0,cnt1=0;
    in>>n>>s;
    for(i=1; i<=n; i++)
        in>>a[i];
    for(i=1; i<=n; i++)
        for(j=i; j<=n; j++)
            for(l=j; l<=n; l++)
                if(!verif((a[i]+a[j]+a[l])%MOD,a[i]+a[j]+a[l]))
                    ceva[(a[i]+a[j]+a[l])%MOD].push_back(a[i]+a[j]+a[l]);
    for(i=1; i<=n; i++)
        for(j=i; j<=n; j++)
            for(l=j; l<=n; l++)
                if(verif((s-(a[i]+a[j]+a[l])+MOD*1000)%MOD,s-(a[i]+a[j]+a[l])))
                {
                    x=s-a[i]-a[j]-a[l];
                    break;
                }
    if(x==-1)
    {
        out<<"-1";
        return 0;
    }
    for(i=1; i<=n&&cnt+cnt1<2; i++)
        for(j=i; j<=n&&cnt+cnt1<2; j++)
            for(l=j; l<=n&&cnt+cnt1<2; l++)
            {
                if(a[i]+a[j]+a[l]==x&&cnt==0)
                {
                    cnt=1;
                    out<<a[i]<<" "<<a[j]<<" "<<a[l]<<" ";
                }
                if(a[i]+a[j]+a[l]==s-x&&cnt1==0)
                {
                    cnt1=1;
                    out<<a[i]<<" "<<a[j]<<" "<<a[l]<<" ";
                }
            }
    return 0;
}