Pagini recente » Cod sursa (job #2216456) | Cod sursa (job #2025865) | Cod sursa (job #3152168) | Cod sursa (job #2986148) | Cod sursa (job #1457570)
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cassert>
#include <vector>
#include <algorithm>
#define pb push_back
#define ft first
#define sd second
using namespace std;
const int wolf = 9973;
vector < pair <int, int> > v[wolf];
inline void ss (int value , int i){
v[value % wolf].pb({value , i});
}
inline int ways (int value, int k){
int xx = (value % wolf < 0 ? - (value % wolf) : value % wolf),
way = 0;
for (const auto it : v[xx])
way += (it.ft== value && it.sd > k);
return way;
}
int main(){
ifstream cin ("oite.in");
ofstream cout ("oite.out");
int c , s;
cin >> c >> s;
vector <int> lol(c);
for (auto &it : lol)
cin >> it;
sort(lol.begin(), lol.end());
for (int i = 0 ; i < c - 1; i++)
for (int j = i + 1 ; j < c ; j ++ )
ss(lol[i] + lol[j], i);
int ll(0);
for (int i = 0 ; i < c - 1; i++)
for (int j = i + 1 ; j < c; j ++)
if (s - lol[i] - lol[j] >= 0)
ll += ways(s - lol[i] - lol[j], j);
cout << ll;
return 0;
}