Pagini recente » Cod sursa (job #2391305) | Cod sursa (job #1865926) | Cod sursa (job #620556) | Cod sursa (job #2136092) | Cod sursa (job #2580636)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1030;
int N, L, M;
int v[NMAX];
long long ans;
vector <pair <int, int> > hmap[NMAX];
void read(){
scanf("%d%d", &N, &L);
for(int i = 1; i <= N; i++)
scanf("%d", &v[i]);
}
void Insert(int val){
int Hash = val % NMAX;
for(int i = 0; i < hmap[Hash].size(); i++){
if(hmap[Hash][i].first == val){
hmap[Hash][i].second++;
return;
}
}
hmap[Hash].push_back(make_pair(val, 1));
}
int Search(int val){
int Hash = val % NMAX;
for(int i = 0; i < hmap[Hash].size(); i++)
if(hmap[Hash][i].first == val)
return hmap[Hash][i].second;
return 0;
}
int main(){
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
read();
for(int i = 1; i < N; i++){
for(int j = i + 1; j <= N; j++)
if(L - v[i] - v[j] >= 0)
ans += Search(L - v[i] - v[j]);
for(int j = 1; j < i; j++)
Insert(v[i] + v[j]);
}
printf("%lld", ans);
return 0;
}