Cod sursa(job #396527)

Utilizator mihai995mihai995 mihai995 Data 15 februarie 2010 15:34:22
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <cstdlib>
using namespace std;
int n,s,v[100],sum[161700];
ifstream f("loto.in");
ofstream o("loto.out");
bool comp(int a,int b){return a<b;}
void exe (int x) 
{
    for (int i = 1; i <= N; ++i) 
        for (int j = 1; j <= N; j++) 
            for (int k = 1; k <= N; ++k) 
                if (v[i] + v[j] + v[k] == x) {o<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";return;}
}
int bs (int m) {
    int i, step;
    for (step = 1; step < v[0]; step <<= 1) {}
    for (i = 0; step; step >>= 1) {
        if (i + step <= v[0] && sum[i + step] <= S - sum[m]) {
            i += step;
        }
    }
    if (sum[i]==S-sum[m]) {
        exe(a[i]);
        exe(a[m]);
        return 1;
    }
    return -1;
}
int main () {
	f>>n>>s;
    for (int i = 1;i<=n;i++)
        f>>v[i];     
    for (int i=1;i<=n;i++) 
        for (int j=i;j<=n;j++) 
            for (int k =j;k<=n;k++) 
                sum[++sum[0]]=v[i]+v[j]+v[k];
	qsort (a+1,sum[0],sizeof(int),comp);
    for (int i=1;i<=sum[0];i++)
        if (bs(i)) {
           return 0;
       }
    }
    o<<"-1";   
    return 0;
}