Pagini recente » Cod sursa (job #1448302) | Cod sursa (job #944271) | Cod sursa (job #522897) | Cod sursa (job #2313396) | Cod sursa (job #1764914)
#include<cstdio>
#include<vector>
const int MOD=10007,NMAX=1024;
int v[NMAX+1];
std::vector<std::pair<int,int> > map[MOD];
void Add(int x)
{
int r=x%MOD;
for(std::vector<std::pair<int,int> >::iterator i=map[r].begin();i!=map[r].end();i++)
{
if(i->first==x)
{
i->second++;
return;
}
}
map[r].push_back(std::make_pair(x,1));
}
int Find(int x)
{
int r=x%MOD;
for(std::vector<std::pair<int,int> >::iterator i=map[r].begin();i!=map[r].end();i++)
{
if(i->first==x)
{
return i->second;
}
}
return 0;
}
int main()
{
int c,l;
FILE *file=fopen("oite.in","r");
fscanf(file,"%d %d",&c,&l);
for(int i=1;i<=c;i++)
fscanf(file,"%d ",&v[i]);
fclose(file);
long long rasp=0;
for(int i=1;i<c;i++)
{
for(int j=i+1;j<=c;j++)
{
if(l-v[i]-v[j]>=0)
{
rasp+=Find(l-v[i]-v[j]);
}
}
for(int j=1;j<i;j++)
Add(v[i]+v[j]);
}
file=fopen("oite.out","w");
fprintf(file,"%lld\n",rasp);
fclose(file);
return 0;
}