Cod sursa(job #1467447)

Utilizator OpportunityVlad Negura Opportunity Data 3 august 2015 14:19:29
Problema Loto Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <vector>
#define pivot 30000
using namespace std;

ifstream fi("loto.in");
ofstream fo("loto.out");

struct cell {
 long nr1, nr2, sum;
};

long n,s,a[101];
vector<cell> h[pivot+1];


cell exists(long nr) {
 for (vector<cell>::iterator it = h[nr % pivot].begin(); it!=h[nr % pivot].end(); it++) {
  if ((*it).sum == nr) {
   return (*it);
  }
 }
 cell c = {0};
 return c;
}


int main() {

 fi >> n >> s;
 for (int i = 0; i<n; i++) {
  fi >> a[i];
 }

 for (int i = 0; i<n; i++) {
  for (int j = 0; j<n; j++) {
   for (int k = 0; k<n; k++) {
    cell aux;
    aux.sum = a[i]+a[j]+a[k];
    aux.nr1 = a[i];
    aux.nr2 = a[j];
    h[aux.sum % pivot].push_back(aux);
   }
  }
 }

 for (int i = 0; i<n; i++) {
  for (int j = 0; j<n; j++) {
   for (int k = 0; k<n; k++) {
    cell x = exists(s-a[i]-a[j]-a[k]);
    if (x.sum) {
     fo << x.nr1 << ' ' << x.nr2 << ' ' << (x.sum-x.nr1-x.nr2) << ' ' << a[i] << ' ' << a[j] << ' ' << a[k];
     return 0;
    }
   }
  }
 }
 
 fo << -1;

 return 0;
}