Cod sursa(job #1374573)

Utilizator ZanoxNonea Victor Zanox Data 5 martie 2015 10:06:36
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;

int main()
{
    ifstream f("loto.in");
    ofstream g("loto.out");
    int n,st;
    f>>n>>st;
    int i,v[n];
    for(i=0;i<n;i++)f>>v[i];
    sort(v,v+n);
    int v2[n*n*n],v4[n*n*n],lim;
    for(i=0,lim=0;i<n*n*n;i++)
    {
        if(i/n/n>i/n%n)i=i/n/n*(n*n+n+1);
        else if(i/n%n>i%n)i=i/n/n*n*n+i/n%n*(n+1);
        v2[lim]=v[i%n]+v[i/n%n]+v[i/n/n];
        v4[lim]=i;
        lim++;
    }
    int t=0,j,k;
    i=-1;
    while(t==0&&i<lim)
    {
        i++;
        for(j=i,k=lim-1;j<k;)
        {
            if(v2[(j+k)/2]==st-v2[i])
            {
                j=(j+k)/2;
                k=j;
            }
            else if(v2[(j+k)/2]<st-v2[i])
            {
                j=(j+k)/2+1;
            }
            else if(v2[(j+k)/2]>st-v2[i])
            {
                k=(j+k)/2-1;
            }
        }
        if(v2[j]==st-v2[i])t=1;
    }
    if(t==0)g<<"-1";
    else
    {
        int v3[6];
        v3[0]=v[v4[i]%n];
        v3[1]=v[v4[i]/n%n];
        v3[2]=v[v4[i]/n/n];
        v3[3]=v[v4[j]%n];
        v3[4]=v[v4[j]/n%n];
        v3[5]=v[v4[j]/n/n];
        sort(v3,v3+6);
        for(i=0;i<6;i++)g<<v3[i]<<' ';
    }
}