Cod sursa(job #1039360)

Utilizator cat_red20Vasile Ioana cat_red20 Data 22 noiembrie 2013 21:48:33
Problema Oite Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<fstream>
#include<vector>
#define MOD 7919
using namespace std;
int a[1025][1025],l,n,t[1025],sol;
vector<pair<int,int> > v[MOD+1];
ifstream fin("oite.in");
ofstream fout("oite.out");

void citire()
{
    fin>>n>>l;
    for(int i=1;i<=n;i++)
    {
        fin>>t[i];
    }
}

void sume()
{
    int s;
    for(int i=1;i<n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            s=t[i]+t[j];
            v[s%MOD].push_back(make_pair(i,j));
            a[i][j]=s;
        }
    }
}

void rezolva()
{
    pair<int, int> p;
    int s;
    for(int i=1;i<n;i++)
    {
        for(int j=i;j<=n;j++)
        {
            s=l-a[i][j];
            for(int k=0;k<v[s%MOD].size();k++)
            {
                p=v[s%MOD][k];
                if(a[p.first][p.second]==s && p.first!=i && p.first!=j && p.second!=i && p.second!=j)
                {
                    sol++;
                }
            }
        }
    }
}

int main()
{
    citire();
    sume();
    rezolva();
    fout<<sol/6;
    return 0;
}