Cod sursa(job #1762542)

Utilizator andrei_diaconu11Andrei C. Diaconu andrei_diaconu11 Data 23 septembrie 2016 18:27:23
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <stdio.h>
#define MOD 666013
#define lene v[i]+v[j]+v[y]
using namespace std;

int v[100], h[1000002], nxt[1000002], path[1000002][3], liste[MOD], a;

int search(int x){
    int j;
    for(j=liste[x%MOD];j!=0 && h[j]!=x;j=nxt[j]);
    return j;
}

void add(int i, int j, int y){
    if(search(lene)!=0)
        return;
    h[a]=lene;
    nxt[a]=liste[lene%MOD];
    liste[lene%MOD]=a;
    a++;
}

int main()
{
    int n, s, i, j, y, poz;
    FILE *fi=fopen("loto.in", "r"), *fo=fopen("loto.out", "w");
    fscanf(fi, "%d%d", &n, &s);
    for(i=0;i<n;i++)
        fscanf(fi, "%d", &v[i]);
    a=2;
    liste[0]=1;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            for(y=0;y<n;y++)
                add(i,j,y);
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            for(y=0;y<n;y++)
                if(s-lene>=0){
                    poz=search(s-lene);
                    if(poz!=0){
                        fprintf(fo, "%d %d %d %d %d %d", path[poz][0], path[poz][1], path[poz][2], v[i], v[j], v[y]);
                        fclose(fi);
                        fclose(fo);
                        return 0;
                    }
                }
    fprintf(fo, "-1");
    fclose(fi);
    fclose(fo);
    return 0;
}