Pagini recente » Cod sursa (job #1154445) | Cod sursa (job #1194533) | Cod sursa (job #1297352) | Cod sursa (job #514933) | Cod sursa (job #660087)
Cod sursa(job #660087)
#include<fstream>
#include<vector>
#include<iostream>
#define NMAX 1030
#define MOD 666013
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
struct hash
{
int x;
short a, b;
};
int n, s, a[NMAX];
vector<hash> h[NMAX];
void Citeste()
{
int i;
f>>n>>s;
for (i=1; i<=n; ++i) f>>a[i];
}
void Rezolva()
{
int k, val, hashval, i, j, nr=0;
hash r;
/*for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
if (i!=j && a[i]+a[j]<=s)
{
r.x=a[i]+a[j]; r.a=i; r.b=j;
h[r.x%MOD].push_back(r);
}*/
for (i=1; i<=n; ++i)
for (j=i+1; j<=n; ++j)
if (i!=j && a[i]+a[j]<=s)
{
r.x=a[i]+a[j]; r.a=i; r.b=j;
val=s-r.x; hashval=val%MOD;
for (k=0; k<(int)h[hashval].size(); ++k)
if (h[hashval][k].x==val && h[hashval][k].b<i && h[hashval][k].b<j && h[hashval][k].a<i && h[hashval][k].a<j)
{
++nr;
//cout<<i<<" "<<j<<" "<<h[hashval][k].a<<" "<<h[hashval][k].b<<"\n";
}
h[r.x%MOD].push_back(r);
}
g<<nr<<"\n";
}
int main()
{
Citeste();
sort(a+1, a+n+1);
Rezolva();
f.close();
g.close();
return 0;
}