Pagini recente » Cod sursa (job #1624938) | Cod sursa (job #1518244) | Cod sursa (job #2834226) | Cod sursa (job #1034978) | Cod sursa (job #912824)
Cod sursa(job #912824)
#include <stdio.h>
#include <list>
#include <vector>
using namespace std;
#define Cmax 1030
#define Mod 666013
vector < list <int> > hash(Mod);
list <int>::iterator it, last;
int lana[Cmax], solution, c, l;
void read(){
scanf("%i %i", &c, &l);
for(register int i = 1; i <= c; ++i) scanf("%i", &lana[i]);
fclose(stdin);
}
inline void add(int val){
int hashVal = val%Mod;
hash[hashVal].push_back(val);
}
inline void search(int val){
int hashVal = val%Mod;
it = hash[hashVal].begin();
last = hash[hashVal].end();
for(; it != last; ++it)
if(*it == val){
++solution;
}
}
void solve(){
for(register int i = 1; i < c; ++i){
for(register int j = i + 1; j <= c; ++j)
if(lana[i] + lana[j] < l)
search( l - (lana[i] + lana[j]) );
for(int k = 1; k < i; ++k)
add(lana[i] + lana[k]);
}
}
int main(){
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
read();
solve();
printf("%i\n", solution);
fclose(stdout);
return 0;
}