Cod sursa(job #1068703)

Utilizator Catalina_BrinzaBrinza Catalina Catalina_Brinza Data 28 decembrie 2013 17:51:46
Problema Loto Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.67 kb
//
//  main.cpp
//  loto+
//
//  Created by Catalina Brinza on 12/10/13.
//  Copyright (c) 2013 Catalina Brinza. All rights reserved.
//

#include <fstream>
#include <vector>
#define nr 666013
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");

struct structy
{
    int x,y,s;
};
vector <structy> v[nr];

int cautare(int val)
{int i;
    int zona=val%nr;
    for (i=0;i<v[zona].size();++i)
        if (v[zona][i].s==val) return i;
    return -1;
        
}

int main()
{int n,s,i,ji,k,sum,p;
    int a[101];

    f>>n>>s;
    for (i=0;i<n;++i) f>>a[i];
    for (i=0;i<n;++i)
        for (ji=0;ji<n;++ji)
            for (k=0;k<n;++k)
            {
                sum=a[i]+a[ji]+a[k];
                if (sum<s) {
                p=cautare(sum);
                if (p==-1)
                {structy q;
                q.s=sum;
                    if (sum*2==s)
                    {
                        g<<a[i]<<' '<<a[i]<<' '<<a[ji]<<' '<<a[ji]<<' '<<a[k]<<' '<<a[k];
                        g.close();return 0;
                    }q.x=a[i];
                    q.y=a[ji];
                    v[sum%nr].push_back(q);
                }}
            }
    f.close();
    for (i=0;i<n;++i)
        for (ji=0;ji<n;++ji)
            for (k=0;k<n;++k)
            {
                sum=a[i]+a[ji]+a[k];
                if (s-sum>0)
                { p=cautare(s-sum);
                if (p!=-1)
                {
                    g<<a[i]<<' '<<a[ji]<<' '<<a[k]<<' '<<v[(s-sum)%nr][p].x<<' '<<v[(s-sum)%nr][p].y<<' '<<v[(s-sum)%nr][p].s-v[(s-sum)%nr][p].x-v[(s-sum)%nr][p].y; g.close();
                    return 0;
                }}
                }
    g<<-1;
    g.close();
    return 0;
}