Pagini recente » Cod sursa (job #822050) | Cod sursa (job #2095184) | Cod sursa (job #2046702) | Cod sursa (job #558380) | Cod sursa (job #1663192)
#include <fstream>
#include <vector>
using namespace std;
int v[1030], n, s;
long long sol;
const int MOD=4999;
vector<pair <int, int> > M[MOD];
int query(int x)
{
int key=x%MOD;
for(vector <pair<int,int> >:: iterator it=M[key].begin();it!=M[key].end();it++)
{
if(it->first==x)
return it->second;
}
return 0;
}
void add(int x)
{
int key=x%MOD;
for(vector <pair<int,int> >:: iterator it=M[key].begin();it!=M[key].end();it++)
{
if(it->first==x)
{
it->second++;
return ;
}
}
M[key].push_back(make_pair(x,1));
}
ifstream fin("oite.in");
ofstream fout("oite.out");
int main()
{
fin>>n>>s;
for(int i=0;i<n;i++)
{
fin>>v[i];
}
add(v[0]+v[1]);
for(int i=2;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(s-v[i]-v[j]>0)
{
sol+=query(s-v[i]-v[j]);
}
}
for(int j=0;j<i;j++)
add(v[i]+v[j]);
}
fout<<sol;
return 0;
}