Cod sursa(job #1703849)

Utilizator cella.florescuCella Florescu cella.florescu Data 17 mai 2016 18:05:54
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <algorithm>
#define INF 2000000000
#define MAXN 100
#define MOD 1299721

using namespace std;

struct suma{
  int a, b, c, s;
} sume[MAXN*MAXN*MAXN], ans1, ans2;

int v[MAXN];

int cmp(suma A, suma B){
  return A.s<B.s;
}

int main()
{
    FILE *fin, *fout;
    int n, i, j, k, m, sum, sol;
    fin=fopen("loto.in", "r");
    fscanf(fin, "%d%d", &n, &sum);
    for(i=0; i<n; i++)
      fscanf(fin, "%d", &v[i]);
    fclose(fin);
    m=0;
    for(i=0; i<n; i++)
      for(j=i; j<n; j++)
        for(k=j; k<n; k++)
          sume[m++]={v[i], v[j], v[k], v[i]+v[j]+v[k]};
    sort(sume, sume+m, cmp);
    for(i=sol=0, j=m-1; i<m && sol==0 && j>=0; i++){
      while(j>=0 && sume[j].s>sum-sume[i].s)
        --j;
      if(j>=0 && sume[i].s+sume[j].s==sum){
        sol=1;
        ans1=sume[i]; ans2=sume[j];
      }
    }
    fout=fopen("loto.out", "w");
    if(sol)
      fprintf(fout, "%d %d %d %d %d %d\n", ans1.a, ans1.b, ans1.c, ans2.a, ans2.b, ans2.c);
    else
      fprintf(fout, "-1\n");
    fclose(fout);
    return 0;
}