Pagini recente » Monitorul de evaluare | Cod sursa (job #2734994) | Cod sursa (job #1454002) | Cod sursa (job #670278) | Cod sursa (job #629370)
Cod sursa(job #629370)
# include <stdio.h>
# include <vector>
using namespace std;
vector <int> v[1000010];
int n,i,j,k,s,x,y,nr,s1,s2,a[110],p;
bool ok,ok1,ok2;
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d\n",&n,&p);
for (i=1; i<=n; i++)
{
scanf("%d ",&a[i]);
}
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
for (k=1; k<=n; k++)
{
s=a[i]+a[j]+a[k];
x=s%1000007;
v[x].push_back(x);
}
ok=false;
nr=0;
while (ok==false && nr<=1000007)
{
nr++;
for (vector <int> :: iterator it =v[nr].begin(); it!=v[nr].end(); it++)
{
x=p-*it;
y=x%1000007;
for (vector <int> :: iterator ix=v[y].begin(); ix!=v[y].end(); ix++)
if (*ix==x) {ok=true; s1=*it; s2=x; break;}
if (ok==true) break;
}
}
ok1=false;
ok2=false;
if (ok)
{
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
{
for (k=1; k<=n; k++)
{
s=a[i]+a[j]+a[k];
if (ok1==false)
if (s==s1) { printf("%d %d %d ",a[i],a[j],a[k]); ok1=true; }
if (ok1==true)
if (s==s2) { printf("%d %d %d\n",a[i],a[j],a[k]); ok2=true; break;}
}
if (ok2==true) break;
}
if (ok2==true) break;
}
}
else
printf("%d\n",-1);
return 0;
}