Pagini recente » Cod sursa (job #898442) | Cod sursa (job #1477270) | Cod sursa (job #2809312) | Cod sursa (job #512183) | Cod sursa (job #1576171)
#include<fstream>
#include<vector>
#define mod 1275
using namespace std;
vector<pair<int, int> > G[mod+2];
int n, s, i, j, v[1200], poz, sol;
vector<pair<int, int> >::iterator find_value(int x, int &poz)
{
int listt=x%mod;
vector<pair<int, int> >::iterator it;
poz=0;
for(it=G[listt].begin(); it!=G[listt].end(); it++)
{
if(it->first==x)
{
return it;
}
poz++;
}
return G[listt].end();
}
void insert_value(int x)
{
int listt=x%mod;
if(find_value(x, poz)==G[listt].end())
{
G[listt].push_back(make_pair(x, 1));
}
}
ifstream in("oite.in");
ofstream out("oite.out");
int main()
{
in>>n>>s;
for(i=1; i<=n; i++)
in>>v[i];
for(i=1; i<n; i++)
{
for(j=i+1; j<=n; j++)
{
if(s-v[i]-v[j]>=0)
{
if(find_value(s-v[i]-v[j], poz)!=G[(s-v[i]-v[j])%mod].end())
{
sol+=G[(s-v[i]-v[j])%mod][poz].second;
}
}
}
for(j=1; j<i; j++)
{
if(find_value(v[i]+v[j], poz)==G[(v[i]+v[j])%mod].end())
{
insert_value(v[i]+v[j]);
}else
{
G[(v[i]+v[j])%mod][poz].second++;
}
}
}
out<<sol;
return 0;
}