Pagini recente » Cod sursa (job #2971793) | Cod sursa (job #1008903) | Clasamentul arhivei de probleme | Cod sursa (job #3282408) | Cod sursa (job #609209)
Cod sursa(job #609209)
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
#define hash_value 524288
#define mod & 524287
ifstream f("oite.in");
ofstream g("oite.out");
struct nod
{ int i,j;
nod(int ii,int jj)
{ i = ii; j = jj;
}
};
vector<nod>hash[hash_value];
int C,L;
int wool[1030];
int countt(int x,int y,int s)
{ int rez = 0,k;
if(s < 0) return 0;
nod z(0,0);
for(k = 0; k < hash[s mod].size(); k++)
{ z.i = hash[s mod][k].i;
z.j = hash[s mod][k].j;
if(wool[z.i] + wool[z.j] == s && z.i != x && z.i != y && z.j != x && z.j != y)
rez++;
}
return rez;
}
int main()
{ int i,j,k,nr = 0;
f>>C>>L;
for(i = 1; i <= C; i++)
f>>wool[i];
for(i = 1; i <= C; i++)
for(j = i + 1; j <= C; j++)
hash[(wool[i] + wool[j])mod].push_back(nod(i,j));
for(i = 1; i <= C; i++)
for(j = i + 1; j <= C; j++)
nr += countt(i, j, L - wool[i] - wool[j]);
g<<nr / 6;
f.close();
g.close();
return 0;
}