Cod sursa(job #983707)

Utilizator sleepaholicNeculaescu Theodor sleepaholic Data 12 august 2013 16:15:44
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#define N 1025
#define MOD 666013
using namespace std;

FILE *fin=fopen("oite.in", "r"), *fout=fopen("oite.out", "w");

struct pc
{
    int n;
    pc *next;
} *bhash[MOD];
int a[N];

void hadd(int k)
{
    int x=k%MOD;
    pc *p=new pc;
    p->n=k;
    p->next=bhash[x];
    bhash[x]=p;
}

int hfind(int k)
{
    int x=k%MOD, count=0;
    pc *p=bhash[x];
    while(p)
    {
        if(p->n==k) count++;
        p=p->next;
    }
    return count;
}

int main()
{
    int n, i, j, sol=0, m;
    fscanf(fin, "%d%d", &n, &m);
    for(i=1;i<=n;i++)
    {
        fscanf(fin, "%d", &a[i]);
    }
    for(i=1;i<n;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            if(m-a[i]-a[j]>0) sol+=hfind(m-a[i]-a[j]);
        }
        for(j=i-1;j;j--)
        {
            hadd(a[i]+a[j]);
        }
    }
    fprintf(fout, "%d", sol);
}