Cod sursa(job #1047167)

Utilizator RaduStefanFMI - Radu Stefan RaduStefan Data 3 decembrie 2013 23:40:42
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <vector>
#include <fstream> 
using namespace std;
vector<int>H[666013];

int cauta(int val)
{
    int i;
    unsigned m=H[val%666013].size();
   // for(i=0;i<m;i++)
    //  if(H[val%666013][i]==val)
    //    return i;
	if(m>0)return 1;
    return -1;
}
 
void inserare(int val,int a,int b,int c)
{
    if(cauta(val)==-1)
	{
		H[val%666013].push_back(a);
		H[val%666013].push_back(b);
		H[val%666013].push_back(c);
	}
	  
}

int main()
{
	int n,s,i,j,k,s2,s3,ok2=0,a,b;
	int v[101];
    ifstream fcin("loto.in");
	ofstream fcout("loto.out");
	fcin>>n>>s;
	for(i=1;i<=n;i++)
		fcin>>v[i];
	for(i=1;i<=n;i++)
		for(j=i;j<=n;j++)
			for(k=j;k<=n;k++)
			{
				s2=v[i]+v[j]+v[k];
				inserare(s2,v[i],v[j],v[k]);
			}
	for(i=1;i<=n&&ok2==0;i++)
		for(j=i;j<=n&&ok2==0;j++)
			for(k=j;k<=n&&ok2==0;k++)
			{
				s2=v[i]+v[j]+v[k];
				s3=s-s2;
				if(cauta(s3)==1)
				{
					unsigned m=H[s2%666013].size();
					for(a=0;a<m;a++)
						fcout<<H[s2&666013][a]<<" ";
					m=H[s3%666013].size();
					for(a=0;a<m;a++)
						fcout<<H[s3&666013][a]<<" ";
					ok2=1;
				}
			}
	if(ok2==0)fcout<<"-1";
	return 0;
}