Cod sursa(job #1467540)

Utilizator MrTudorTudor Savulescu MrTudor Data 3 august 2015 16:07:17
Problema Loto Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<fstream>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
const int M=666019,MIL=1000001;
int lst[M],val[MIL],urm[MIL],nr,v[101];
void adauga(int x)
{
    int r=x%M;
    nr++;
    val[nr]=x;
    urm[nr]=lst[r];
    lst[r]=nr;
}
bool cauta(int x)
{
    int p=lst[x%M];
    while(p!=0)
    {
        if(val[p]==x)
            return true;
        p=urm[p];
    }
    return false;
}
void afiseaza(int n,int x)
{
    int i,j,k,s;
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            for(k=1; k<=n; k++)
            {
                s=v[i]+v[j]+v[k];
                if(x==s)
                {
                    g<<v[i]<<" "<<v[j]<<" "<<v[k];
                    return;
                }

            }
}
int main()
{
    int n,i,s,j,k,sum;
    f>>n>>sum;
    for(i=1; i<=n; i++)
        f>>v[i];
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            for(k=1; k<=n; k++)
            {
                s=v[i]+v[j]+v[k];
                adauga(s);
            }
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            for(k=1; k<=n; k++)
            {
                s=v[i]+v[j]+v[k];
                if(cauta(sum-s))
                {
                    g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
                    afiseaza(n,sum-s);
                    return 0;
                }
            }
}