Cod sursa(job #2260836)

Utilizator armigheGheorghe Liviu Armand armighe Data 15 octombrie 2018 17:31:38
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<cstdio>
#include<fstream>
#include<vector>
#define MOD 100007
using namespace std;
FILE *f=fopen("loto.in","r");
ofstream g("loto.out");
int v[102],i1,i2,i3;
struct elem
{
    int x,a,b,c;
};
vector<elem>h[100010];
void adauga(int x)
{
    int y;
    y=x%MOD;
    h[y].push_back({x,i1,i2,i3});
}

int cauta(int x)
{
    int y,n,i;
    y=x%MOD;
    n=h[y].size();
    for(i=0;i<n;i++)
    if(h[y][i].x==x)
    {
        g<<h[y][i].a<<" "<<h[y][i].b<<" "<<h[y][i].c<<" "<<i1<<" "<<i2<<" "<<i3;
        return 1;
    }
    return 0;
}

int main()
{
    int n,s,sol=0,i;
    fscanf(f,"%d%d",&n,&s);
    for(i=1;i<=n;i++)
        fscanf(f,"%d",&v[i]);
    for(i1=1;i1<=n;i1++)
    for(i2=1;i2<=n;i2++)
    for(i3=1;i3<=n;i3++)
        adauga(v[i1]+v[i2]+v[i3]);
    for(i1=1;i1<=n;i1++)
    {
        for(i2=1;i2<=n;i2++)
        {
            for(i3=1;i3<=n;i3++)
            if(s-(v[i1]+v[i2]+v[i3])>=0)
            {
                sol+=cauta(s-(v[i1]+v[i2]+v[i3]));
                if(sol!=0)
                    break;
            }
            if(sol!=0)
            break;
        }
        if(sol!=0)
            break;
    }
    if(sol==0)
        g<<-1;
    return 0;
}