Cod sursa(job #2590074)

Utilizator aser.cobaschiCobaschi Aser aser.cobaschi Data 27 martie 2020 13:58:07
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 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;
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=1;j<=n;j++)
       for(int k=1;k<=n;k++)
          if(i+j+k<s)
      {
          t.push_back(make_tuple(i+j+k,i,j,k));
          nr++;
      }
    sort(t.begin(),t.end());
    for(int i=0;i<nr;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;
}