Cod sursa(job #2276339)

Utilizator alexradu04Radu Alexandru alexradu04 Data 4 noiembrie 2018 16:55:44
Problema Loto Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
	
#include<cstdio>
#include<fstream>
#include<vector>
#define MOD 666013
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[666015];
void adauga(int x)
{
    int y,n,i,ok=0;
    y=x%MOD;
    n=h[y].size();
    for(i=0;i<n;i++)
    if(h[y][i].x==x)
    {
        ok=1;
        break;
    }
    if(ok==0)
    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<<v[h[y][i].a]<<" "<<v[h[y][i].b]<<" "<<v[h[y][i].c]<<" "<<v[i1]<<" "<<v[i2]<<" "<<v[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&&sol==0;i1++)
    for(i2=1;i2<=n&&sol==0;i2++)
    for(i3=1;i3<=n&&sol==0;i3++)
    if(s-(v[i1]+v[i2]+v[i3])>=0)
        sol+=cauta(s-(v[i1]+v[i2]+v[i3]));
    if(sol==0)
        g<<-1;
    return 0;
}