Cod sursa(job #863438)

Utilizator ioanapopaPopa Ioana ioanapopa Data 23 ianuarie 2013 20:08:43
Problema Loto Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<cstdio>
#include<vector>
#include<fstream>
#define M 666013
using namespace std;

int s, s2, s3;
vector<int>v[M];

int caut(int s) 
{
    int i, rest=s%M;
    for(vector<int>:: iterator it = v[rest].begin(); it!=v[rest].end(); ++it)
        if(*it == s)
            return 1;
    return -1;
}
 
int main() 
{
    int i, j, k, n, ok=0, aux[10900];
 
    ifstream f("loto.in");
    ofstream g("loto.out");
 
    f>>n>>s;
    for(i=1;i<=n;i++)
        f>>aux[i];
 
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
            for(k=j;k<=n;k++) 
			{
                s2=aux[i]+aux[j]+aux[k];
                v[s2%M].push_back(s2);
                if(caut(s-s2)==1)
				{
                    g<<aux[i]<<" "<<aux[j]<<" "<<aux[k]<<" ";
                    i=j=k=n;
                    ok=1;
                }
        }
 
    if(ok==1) 
	{
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
            for(k=j;k<=n;k++) 
			{
                s3=aux[i]+aux[j]+aux[k];
                if(s3==s-s2) 
				{
                    g<<aux[i]<<" "<<aux[j]<<" "<<aux[k];
                    i=j=k=n;
                }
            }
    }
 
    if(ok==0)
        g<<-1;
 
    f.close();
    g.close();
 
    return 0;
}