Cod sursa(job #1786581)
Utilizator | Data | 23 octombrie 2016 12:38:40 | |
---|---|---|---|
Problema | Oite | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.28 kb |
#include<cstdio>
#include<iostream>
using namespace std;
int v[1200];
long long int h[550000],l;
int co[550000];
int res;
int c;
int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%d %lld",&c,&l);
for(int i=1;i<=c;i++)
{
scanf("%d",&v[i]);
}
for(int i=3;i<c;i++)
{
for(int j=1;j<i-1;j++)
{
long long int p=v[i-1]+v[j];
int to=p%527017;
bool flag=0;
for(int k=to;k<527017;k++)
{
if(h[k]==0)
{
h[k]=p;
co[k]++;
flag=1;
break;
}
else if(h[k]==p)
{
co[k]++;
flag=1;
break;
}
}
if(flag==0)
{
for(int k=0;k<to;k++)
{
if(h[k]==0)
{
h[k]=p;
co[k]++;
break;
}
else if(h[k]==p)
{
co[k]++;
break;
}
}
}
}
for(int j=i+1;j<=c;j++)
{
long long int p=l-v[i]-v[j];
int to=p%527017;
bool flag=0;
for(int k=to;k<527017;k++)
{
if(h[k]==0)
{
flag=1;
break;
}
else if(h[k]==p)
{
res+=co[k];
flag=1;
break;
}
}
if(flag==0)
{
for(int k=0;k<to;k++)
{
if(h[k]==0)
{
break;
}
else if(h[k]==p)
{
res+=co[k];
break;
}
}
}
}
}
printf("%d\n\n",res);
}