Pagini recente » Cod sursa (job #2217525) | Cod sursa (job #2409026) | Cod sursa (job #2217596) | Cod sursa (job #116434) | Cod sursa (job #1553537)
#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;
break;
}
else
{
long long nr1 = 0;
int x = a[l];
while (l < r && a[l] == x)
{
nr1++;
l++;
}
long long nr2 = 0;
x = a[r];
while (l - 1 < r && a[r] == x)
{
nr2++;
r--;
}
ans += nr1 * nr2;
}
}
}
}
}
}
void read()
{
fin >> N >> S;
for (int i = 1; i <= N; ++i)
fin >> a[i];
}
int main()
{
read();
solve();
fout << ans;
return 0;
}