Pagini recente » Cod sursa (job #1943161) | Cod sursa (job #1615665) | Cod sursa (job #855661) | Cod sursa (job #1077445) | Cod sursa (job #2798717)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
struct pereche
{
int a, b;
};
unordered_map<int, pereche> M;
int n, s, a[1026], fr[1025];
int Diferite(int x, int i, int j)
{
if (M[x].a != i && M[x].a != j && M[x].b != j && M[x].b != i)
return 1;
return 0;
}
int Noi(int x, int i, int j)
{
if (fr[M[x].a] == 0 || fr[M[x].b] == 0 || fr[i] == 0 || fr[j] == 0)
return 1;
return 0;
}
int main()
{
int i, j, x, cnt = 0, y;
fin >> n >> s;
for (i = 1; i <= n; i++)
fin >> a[i];
for (i = 1; i <= n; i++)
for (j = i + 1; j <= n; j++)
M[a[i] + a[j]] = { i, j };
for(i = 1;i <= n;i++)
for (j = i + 1; j <= n; j++)
{
x = s - a[i] - a[j];
if (M.count(x) > 0)
{
if (Diferite(x, i, j) && Noi(x, i, j))
{
fr[i] = fr[j] = fr[M[x].a] = fr[M[x].b] = 1;
cnt++;
}
}
}
fout << cnt << "\n";
}