Pagini recente » Profil Djok | Cod sursa (job #1440390) | Cod sursa (job #2790285) | Cod sursa (job #1875941) | Cod sursa (job #1553536)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
const int MAXN = 1025;
int N, S;
int a[MAXN];
long long ans;
void solve()
{
sort(a + 1, a + N + 1);
for (int i = 1; i < N; ++i)
{
for (int j = i + 1; j <= N; ++j)
{
int sum = S - a[i] - a[j];
int l = j + 1;
int r = N;
while (l < r)
{
if (a[l] + a[r] < sum)
l++;
else if (a[l] + a[r] > sum)
r--;
else
{
if (a[l] == a[r])
{
long long x = 1;
for (int k = 2; k <= r - l + 1; ++k)
x *= 1LL * k;
ans += x;
}
else
{
long long x = 1;
while (l < r && a[l + 1] == a[l])
{
x++;
l++;
}
long long y = 1;
while (l < r && a[r - 1] == a[r])
{
y++;
r--;
}
ans += x * y;
}
break;
}
}
}
}
}
void read()
{
fin >> N >> S;
for (int i = 1; i <= N; ++i)
fin >> a[i];
}
int main()
{
read();
solve();
fout << ans;
return 0;
}