Cod sursa(job #32496)

Utilizator goguGogu Marian gogu Data 17 martie 2007 22:08:43
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <vector>
#include <algorithm>
#define MOD 783121
#define baga(k) h[(k)%MOD].push_back(k);

using namespace std;

int n, sol;
unsigned s, a[1200];
vector <unsigned> h[MOD];

int count(unsigned k)
{
    int rez=0;
    unsigned key=k%MOD;
    for (unsigned i=0; i<h[key].size(); i++)
        if (h[key][i]==k) rez++;
    return rez;
}

int main()
{
    freopen("oite.in", "r", stdin);
    freopen("oite.out", "w", stdout);
    scanf("%d %u", &n, &s);
    int i,j,k;
    for (i=0; i<n; i++)
        scanf("%u", a+i);
    sort(a, a+n);
    for (int k=2; k<n-1; k++){
        for (i=0; i<k-1; i++)
            baga(a[k-1]+a[i]);
        for (i=k+1; i<n; i++)
            sol+=count(s-a[k]-a[i]);
    }
    printf("%d\n", sol);
    return 0;
}