Pagini recente » Cod sursa (job #2771648) | Cod sursa (job #908648) | Cod sursa (job #437038) | Cod sursa (job #320353) | Cod sursa (job #1312549)
#include <fstream>
#include <vector>
#define DIM 1000017
using namespace std;
vector < pair<int, int> > H[DIM];
int n, i, sol, L, j, k, s;
int v[1002];
int main() {
ifstream fin("oite.in");
ofstream fout("oite.out");
fin>>n>>L;
for (i=1;i<=n;i++)
fin>>v[i];
for (i=1;i<n;i++) {
for (j=i+1;j<=n;j++) {
// caut L-v[i]-v[j]
s = L-v[i]-v[j];
if (s < 0)
continue;
for (k = 0; k<H[s%DIM].size(); k++)
if (H[s%DIM][k].first == s) {
sol += H[s%DIM][k].second;
break;
}
}
for (j=1;j<i;j++) {
s = v[i]+v[j];
if (v[i] + v[j] > L)
continue;
//caut in lista H[s%DIM]
for (k = 0; k<H[s%DIM].size(); k++)
if (H[s%DIM][k].first == s) {
H[s%DIM][k].second ++;
break;
}
if (k == H[s%DIM].size()) {
H[s%DIM].push_back( make_pair(s, 1) );
}
}
}
fout<<sol<<"\n";
return 0;
}