Pagini recente » Cod sursa (job #2280753) | Cod sursa (job #1878299) | Cod sursa (job #3264640) | Cod sursa (job #73513) | Cod sursa (job #1808788)
#include <fstream>
#define N 1027
#define mod 104729
#define in "oite.in"
#define out "oite.out"
using namespace std;
ifstream fin(in);
ofstream fout(out);
struct nod{
int info,ct;
nod *leg;
} *h[mod];
int n,S,a[N];
inline int HFind(int X)
{
int r=X%mod;
nod *p;
for(p=h[r]; p!=NULL && p->info !=X; p=p->leg);
if(p!=NULL) return p->ct;
return 0;
}
inline void HAdd(int X)
{
int r=X%mod;
nod *p;
for(p= h[r]; p!=NULL && p->info !=X; p=p->leg);
if(p==NULL)
{
p=new nod;
p->info=X;
p->ct=1;
p->leg=h[r];
h[r]=p;
}
else ++(p->ct);
}
int main()
{
int rez=0;
fin>>n>>S;
for(int i=1; i<=n; ++i)
fin>>a[i];
for(int i=1; i<n; ++i)
{
for(int j=i+1; j<=n; ++j)
if(S-a[i]-a[j]>0) rez+=HFind(S-a[i]-a[j]);
for(int j=i-1; j>0; --j)
HAdd(a[i]+a[j]);
}
fout<<rez<<"\n";
fin.close(); fout.close();
return 0;
}