Pagini recente » Cod sursa (job #345990) | Cod sursa (job #1249138) | Cod sursa (job #2225480) | Cod sursa (job #1354265) | Cod sursa (job #2543860)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("medie.in");
ofstream fout("medie.out");
int n, v[9005], fr[7005];
vector <int> pos[7005];
long long ans;
int gasit(int val, int i)
{
int st = 0, dr = pos[val].size() - 1;
while (st <= dr)
{
int mid = (st + dr) / 2;
if (pos[val][mid] == i) return 1;
else if (pos[val][mid] > i) dr = mid - 1;
else st = mid + 1;
}
return 0;
}
int main()
{
fin >> n;
for (int i = 1; i <= n; ++i)
{
fin >> v[i];
fr[v[i]]++;
pos[v[i]].push_back(i);
}
for (int i = 1; i < n; ++i)
for (int j = i + 1; j <= n; ++j)
{
if (v[i] % 2 != v[j] % 2) continue;
int x = (v[i] + v[j]) / 2;
ans = ans + fr[x] - gasit(x, i) - gasit(x, j);
}
fout << ans;
fin.close();
fout.close();
return 0;
}