Cod sursa(job #1760440)

Utilizator CalarisPredut Denis Stefanita Calaris Data 20 septembrie 2016 20:07:54
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <fstream>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

#define MAX 1000001
vector<int> values;
int indexes[MAX][3];

int main()
{
    fstream f("loto.in",ios::in);
    ofstream g("loto.out");
    vector<int> vect;
    int x,N,S,M,i,j,k,y,m,xd,yd,zd,res;

    f>>N>>S;
    M= N;
    do
        {
            f>>x;
            vect.push_back(x);
        }while(--M);

    for(i=0;i<N;++i)
        for(j=0;j<N;++j)
          for(k=0;k<N;++k)
            {
                values.push_back(vect[i] + vect[j] + vect[k]);
                indexes[vect[i] + vect[j] + vect[k]][0] = i;
                indexes[vect[i] + vect[j] + vect[k]][1] = j;
                indexes[vect[i] + vect[j] + vect[k]][2] = k;
            }

    sort(values.begin(),values.end());

    res = values.size();

    for(i=0;i<res;++i)
        {
        x = 0;
        y = res-1;
        m = (x+y)/2;
        while(x!=y && (values[i]+values[m])!=S)
         {
             if(values[m]+values[i]<S) x = m+1;
             else if(values[m]+values[i]>S) y = m-1;

             m = (x+y)/2;
         }

         if((values[i]+values[m])==S)
            {
            //afisam raspunsul
            g<<vect[indexes[values[i]][0]]<<" "<<vect[indexes[values[i]][1]]<<" "<<vect[indexes[values[i]][2]]<<" "<<vect[indexes[values[m]][0]]<<" "<<vect[indexes[values[m]][1]]<<" "<<vect[indexes[values[m]][2]];
            return 0;
            }

        }
    g<<"-1";

    return 0;
}