Cod sursa(job #855767)
Utilizator | Data | 15 ianuarie 2013 16:35:32 | |
---|---|---|---|
Problema | Loto | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.45 kb |
#include<cstdio>
#include <vector>
#define MAXN 10900
#define mod 666013
using namespace std;
vector <int> h[mod];
long long S,sum,sum2;
int find(int x)
{
int index=x%mod,i;
for(i=1;i<h[index].size();++i)
if(h[index][i]==x) return 1;
return 0;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int N,i,j,k,sem=0;
long long a[MAXN];
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;
}