Cod sursa(job #2590079)

Utilizator aser.cobaschiCobaschi Aser aser.cobaschi Data 27 martie 2020 14:14:56
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
//#include <fstream>
//#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
const int N=110;
const int NN=1000010;
int n,s,v[N],nr;
vector <tuple<int,int,int,int>> t;
//struct info
//{
  //  int suma,a,b,c;
//}t[NN];
int main()
{
    //FILE *fin,*fout;
   // fin=fopen("stramosi.in","r");
    //fout=fopen("stramosi.out","w");
  //fscanf(fin,"%d%d",&n,&m);int
  f>>n>>s;
  for(int i=1;i<=n;i++)
    f>>v[i];
  for(int i=1;i<=n;i++)
    for(int j=i;j<=n;j++)
       for(int k=j;k<=n;k++)
          if(v[i]+v[j]+v[k]<s)
      {
          t.push_back(make_tuple(v[i]+v[j]+v[k],v[i],v[j],v[k]));
          nr++;
      }
    sort(t.begin(),t.end());
    for(int i=0;i<=nr-1;i++)
    {
        int sum,a,b,c;
        tie(sum,a,b,c)=t[i];
        int ramas=s-sum;
        int lo=0,hi=nr-1;
        //int mij=lo+(hi-lo)/2;
        while(lo<=hi)
        {
            int mij=lo+(hi-lo)/2;
            int sumnou,anou,bnou,cnou;
            tie(sumnou,anou,bnou,cnou)=t[mij];
            if(sumnou==ramas)
            {
                g<<a<<' '<<b<<' '<<c<<' '<<anou<<' '<<bnou<<' '<<cnou;
                return 0;
            }
            else if(sumnou<ramas)
                lo=mij+1;
            else hi=mij-1;
        }

    }
   g<<-1;

    return 0;
}