Cod sursa(job #855752)

Utilizator marialivia16Chiorean Maria Livia marialivia16 Data 15 ianuarie 2013 16:15:22
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.41 kb
#include<cstdio>
#include <vector>
#define MAXN 10900
#define mod 666013
using namespace std;
vector <int> h[mod];
int find(int x)
{
	int k=x%mod,i;
	for(i=0;i<h[k].size();i++)
		if(h[k][i]==x) return 1;
	return -1;
}
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    int N,S,i,j,k,a[MAXN],sum,sum2,sem=0;
    scanf("%d %d",&N,&S);
    for(i=1;i<=N;i++)
                    scanf("%d",&a[i]);
    
    for(i=1;i<=N;i++)
    {
                     for(j=i;j<=N;j++)
                     {
                                      for(k=j;k<=N;k++)
                                      {
                                                       sum=a[i]+a[j]+a[k];
                                                       h[sum%mod].push_back(sum);
                                                       if(find(S-sum)==1)
                                                       {
                                                                         printf("%d %d %d",a[i],a[j],a[k]);
                                                                         i=N;
                                                                         j=N;
                                                                         k=N;
                                                                         sem=1;
                                                       }
                                      }
                     }
    }
    if(sem==1)
    {
              for(i=1;i<=N;i++)
              {
                     for(j=i;j<=N;j++)
                     {
                                      for(k=j;k<=N;k++)
                                      {
                                                       sum2=a[i]+a[j]+a[k];
                                                       if(sum2=S-sum)
                                                       {
                                                                  printf(" %d %d %d",a[i],a[j],a[k]);
                                                                  i=N;
                                                                  j=N;
                                                                  k=N;
                                                       }
                                      }
                     }
              }
    }   
    
    if(sem==0) printf("-1");  

    return 0;
}