Cod sursa(job #1216445)

Utilizator ZenusTudor Costin Razvan Zenus Data 4 august 2014 16:42:23
Problema Oite Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

#define MOD 666013
#define MP make_pair
#define PB push_back
#define NMAX 1005

vector < pair < long long , short > > H[MOD];
vector < pair < long long , short > > :: iterator e;;
int i,j,N,L,ans,f;
int V[NMAX];
long long X;

int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);

scanf("%d%d",&N,&L);

for (i=1;i<=N;++i)
scanf("%d",&V[i]);

sort(V+1,V+N+1);

for (i=1;i<=N;++i)
for (j=i+1;j<=N;++j)
H[(V[i]+V[j])%MOD].PB(MP(V[i]+V[j],j));

for (i=1;i<=N && V[i]+V[1]<=L/2;++i)
for (j=i+1;j<=N && V[i]+V[j]<=L;++j)
{
    f=(L-V[i]-V[j])%MOD;

    for (e=H[f].begin();e!=H[f].end();++e)
    if (i>(*e).second)
    ++ans;
}

printf("%d\n",ans);

return 0;
}