Cod sursa(job #1401570)

Utilizator Johnny07Savu Ioan-Daniel Johnny07 Data 25 martie 2015 23:23:00
Problema Loto Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");

vector <int> vec[1000000];

int nr,n,s,a[110];

struct st
{
    int sum,p,s,t;
}v[1000100];

void add (int kx)
{
    int l=kx%999983;
    vec[l].push_back(kx);
}

bool check (int xx)
{
    int l=xx%999983;
    for (int j=0;j<vec[l].size();j++)
    {
        if (vec[l][j]==xx) return 1;
    }
    return 0;
}

void searh (int numar)
{
    int i;
    for (i=1;i<=nr;i++)
        if (v[i].sum==numar)
    {
        g<<v[i].p<<" "<<v[i].s<<" "<<v[i].t;
        break;
    }
}

int main()
{
    int i,j,k;
f>>n>>s;
for (i=1;i<=n;i++)
{
    f>>a[i];
}
nr=0;
for (i=1;i<=n;i++)
{
    for (j=1;j<=n;j++)
    {
        for (k=1;k<=n;k++)
            if (a[i]+a[j]+a[k]<s)
        {
       nr++;
       v[nr].sum=a[i]+a[j]+a[k];
       v[nr].p=a[i];
       v[nr].s=a[j];
       v[nr].t=a[k];
       add(v[nr].sum);
        }
    }
}
int z=0;
    for (i=1;i<=nr;i++)
    {
        z=check (s-v[i].sum);
        if (z==1) {g<<v[i].p<<" "<<v[i].s<<" "<<v[i].t<<" ";searh(s-v[i].sum);break;}
    }
if (z==0) g<<-1;

    return 0;
}