Cod sursa(job #1971920)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 21 aprilie 2017 11:51:40
Problema Oite Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdint.h>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include <math.h>
#define nmax 1025
#define mod 7919
using namespace std;
fstream f1("oite.in", ios::in);
fstream f2("oite.out", ios::out);
int16_t n;
int32_t suma, a[nmax];
int64_t nrsol;
struct nod
{
    int32_t val;
    nod *urm;

} *t[mod];
void citire()
{
    int16_t i;
    f1>>n>>suma;
    for(i=1; i<=n; i++)
        f1>>a[i];
}
void solutie()
{
    int16_t i, j, k;
    for(i=2; i<n; i++)
    {
        for(j=i+1; j<=n; j++)
        {
            ///cauti valoarea (suma-(a[i]+a[j])) in hash
            if(suma-(a[i]+a[j])>0)
            {
                 nod*p;
                 for(p=t[(suma-(a[i]+a[j]))%mod]; p!=0; p=p->urm)
                    if(p->val==(suma-(a[i]+a[j]))) nrsol++;
            }
        }
        for(k=1; k<i; k++)
        {
            ///bagi in hash a[i]+a[k]
            nod  *p=new nod;
            p->val=a[i]+a[k];
            p->urm=t[(a[i]+a[k])%mod];
            t[(a[i]+a[k])%mod]=p;
        }
    }
}
int main()
{
    citire();
    solutie();
    f2<<nrsol;
    return 0;
}