Cod sursa(job #1039367)

Utilizator cat_red20Vasile Ioana cat_red20 Data 22 noiembrie 2013 22:04:30
Problema Oite Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<fstream>
#include<vector>
#define MOD 666013
using namespace std;
int a[1025][1025],l,n,t[1025];
long long sol;
vector<pair<short,short> > 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;
            a[j][i]=s;
        }
    }
}

void rezolva()
{
    pair<int, int> p;
    int s;
    for(int i=1;i<n;i++)
    {
        for(int j=i+1;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 && j<p.first)
                {
                    sol++;
                }
            }
        }
    }
}

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