Pagini recente » Cod sursa (job #184391) | Cod sursa (job #2640081) | Cod sursa (job #1910126) | Cod sursa (job #2133420) | Cod sursa (job #2919191)
#include <bits/stdc++.h>
#define NMAX 9005
#define MAX_NUM 7005
using namespace std;
/*******************************/
// INPUT / OUTPUT
ifstream f("medie.in");
ofstream g("medie.out");
/*******************************/
/// GLOBAL DECLARATIONS
int N;
int ans;
int v[NMAX], cnt[2][MAX_NUM], freq[2 * MAX_NUM];
/*******************************/
/// FUNCTIONS
void ReadInput();
void Solution();
void Output();
/*******************************/
///-------------------------------------
inline void ReadInput()
{
f >> N;
for (int i = 1 ; i <= N ; ++ i) f >> v[i];
}
///-------------------------------------
inline void Solution()
{
if (N < 3) return;
for (int i = N ; i >= 2 ; -- i) cnt[1][v[i]] ++;
int x1, x2;
for (int i = 1 ; i <= N ; ++ i)
{
ans += freq[2 * v[i]];
for (int diff = 0 ; diff < v[i] ; ++ diff)
{
x1 = v[i] - diff, x2 = v[i] + diff;
if (x1 != x2)
{
ans += cnt[0][x1] * cnt[1][x2];
ans += cnt[0][x2] * cnt[1][x1];
}
else
{
ans += cnt[0][x1] * cnt[1][x1];
}
}
for (int j = i - 1 ; j >= 1 ; -- j) freq[v[i] + v[j]] ++;
cnt[0][v[i]] ++;
cnt[1][v[i + 1]] --;
}
memset(freq, 0, sizeof(freq));
for (int i = N ; i >= 1 ; -- i)
{
ans += freq[2 * v[i]];
for (int j = i + 1 ; j <= N ; ++ j)
{
freq[v[i] + v[j]] ++;
}
}
}
///-------------------------------------
inline void Output()
{
g << ans;
}
///-------------------------------------
int main()
{
ReadInput();
Solution();
Output();
return 0;
}