Pagini recente » Rating Popescu Constantin (TestMGC) | Cod sursa (job #1241512) | Cod sursa (job #2557209)
#include <bits/stdc++.h>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,s,i,j,l,x,ok,k,w[101],nr,u[7],poz1,poz2;
struct loto
{
int suma;
int i,j,l;
};
bool comp(loto a,loto b)
{
return a.suma<b.suma;
}
loto v[1000001];
int caut(int st,int sumabuna)
{
int dr=nr;
while(st<=dr)
{
int mid=(st+dr)/2;
if(v[mid].suma==sumabuna)return mid;
if(v[mid].suma<sumabuna)st=mid+1;
if(v[mid].suma>sumabuna)dr=mid-1;
}
}
int main()
{
f>>n;
f>>s;
for(i=1; i<=n; i++)
f>>w[i];
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
for(l=1; l<=n; l++)
{
if(w[i]+w[j]+w[l]<s)
{
nr++;
v[nr].suma=w[i]+w[j]+w[l];
v[nr].i=i;
v[nr].j=j;
v[nr].l=l;
}
}
sort(v+1,v+nr+1,comp);
poz1=1;ok=0;
while(poz1<=nr and ok==0)
{
poz2=caut(poz1,s-v[poz1].suma);
if(v[poz1].suma+v[poz2].suma==s)ok=1;
else poz1++;
}
if(ok==0)g<<-1;
else
{
u[1]=w[v[poz1].i];
u[2]=w[v[poz1].j];
u[3]=w[v[poz1].l];
u[4]=w[v[poz2].i];
u[5]=w[v[poz2].j];
u[6]=w[v[poz2].l];
sort(u+1,u+7);
for(i=1; i<=6; i++)g<<u[i]<<" ";
}
}