Cod sursa(job #2556955)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 25 februarie 2020 12:58:05
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");

int n,s,v[105],nr=0,afis[7]

struct pct{
 int a,b,c,t;
} pt[1000005];

bool cmp(pct x,pct y)
 {
  return x.t<y.t;
 }
int main()
{
fin>>n>>s;
for(int i=1;i<=n;i++)
 fin>>v[i];

sort(v+1,v+n+1);

for(int i=1;i<=n;i++)
 for(int j=i;j<=n;j++)
  for(int z=j;z<=n;z++)
 {
  nr++;
  pt[nr].a=v[i];
  pt[nr].b=v[j];
  pt[nr].c=v[z];
  pt[nr].t=v[i]+v[j]+v[z];
 }

sort(pt+1,pt+nr+1,cmp);
for(int i=1;i<=nr;i++)
 {
  int st=1,dr=nr,rasp=0,mid;
  while(st<=dr)
   {
    mid=(st+dr)/2;
    if(s-pt[mid].t>pt[i].t) st=mid+1;
    else if(s-pt[mid].t<pt[i].t) dr=mid-1;
         else {
               afis[1]=pt[i].a; afis[2]=pt[i].b; afis[3]=pt[i].c;
               afis[4]=pt[mid].a; afis[5]=pt[mid].b; afis[6]=pt[mid].c;
               sort(afis+1,afis+7);
               fout<<afis[1]<<" "<<afis[2]<<" "<<afis[3]<<" "<<afis[4]<<" "<<afis[5]<<" "<<afis[6];
               break;
              }
   }
 }
if(afis[1]==0)
fout<<"-1";
}