Cod sursa(job #1679882)

Utilizator antanaAntonia Boca antana Data 8 aprilie 2016 12:24:17
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <cstdio>
#include<algorithm>
#include<vector>
#define MOD 1000003
#define MAX 100
using namespace std;
struct aa{
    int x, y, z, s;
};
vector<aa>hash1[MOD];
int v[MAX+1], n;
inline void insert(int a, int i, int j, int k)
{
    aa curent;
    curent.s=a;
    curent.x=i;
    curent.y=j;
    curent.z=k;
    hash1[a%MOD].push_back(curent);
}
inline int search(int a)
{
    int i=0, poz=-1, f=0;
    while(!hash1[a%MOD].empty()&&i<hash1[a%MOD].size()&&(!(f))){
        if(hash1[a%MOD][i].s==a)
        {
            f=1;
            poz=i;
        }
        i++;
    }
    return poz;
}
int main()
{
    freopen("loto.in", "r", stdin);
    freopen("loto.out", "w", stdout);
    int i, j, k, sum, a, poz;
    scanf("%d%d", &n, &sum);
    for(i=1;i<=n;i++)
        scanf("%d", &v[i]);
    sort(v+1, v+n+1);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++)
                if(v[i]+v[j]+v[k]<sum)
                {
                    insert(v[i]+v[j]+v[k], i, j, k);
                    a=sum-(v[i]+v[j]+v[k]);
                    poz=search(a);
                    if(poz!=-1)
                    {
                        printf("%d %d %d %d %d %d", v[i], v[j], v[k], hash1[a%MOD][poz].x, hash1[a%MOD][poz].y, hash1[a%MOD][poz].z);
                        return 0;
                    }
                }
    printf("-1");
    return 0;
}