Cod sursa(job #1467490)

Utilizator OpportunityVlad Negura Opportunity Data 3 august 2015 15:02:26
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <vector>
#define pivot 8888
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 = i; j<n; j++) {
   for (int k = j; k<n; k++) {
    if (a[i]+a[j]+a[k] > s) continue;
    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;
}