Pagini recente » Cod sursa (job #391123) | Cod sursa (job #507507) | Cod sursa (job #1103172) | Cod sursa (job #672120) | Cod sursa (job #2699929)
#include <fstream>
#include <vector>
#define per pair<long long, int>
#define sm first
#define nrv second
using namespace std;
ifstream cin("oite.in");
ofstream cout("oite.out");
typedef long long ll;
const int cmax = 1025;
const int mod = 500009;
int c, rsp, o[cmax];
ll l;
vector <per> v[mod + 1];
void read(){
cin >> c >> l;
for(int i = 1; i <= c; i++)
cin >> o[i];
}
void ans(){
for(int i = 1; i < c; i++){
for(int j = i + 1; j <= c; j++){
ll nr = l - o[i] - o[j];
if(nr < 0)
continue;
for(int q = 0; q < v[nr % mod].size(); q++)
if(v[nr % mod][q].sm == nr){
rsp += v[nr % mod][q].nrv;
break;
}
}
for(int j = 1; j < i; j++){
ll nr = o[i] + o[j];
bool exists = false;
for(int q = 0; q < v[nr % mod].size(); q++)
if(v[nr % mod][q].sm == nr){
v[nr % mod][q].nrv++;
exists = true;
break;
}
if(!exists)
v[nr % mod].push_back({nr, 1});
}
}
cout << rsp;
}
int main()
{
read();
ans();
return 0;
}