Pagini recente » Cod sursa (job #915886) | Borderou de evaluare (job #1572178) | Cod sursa (job #3190093) | Cod sursa (job #1302705) | Cod sursa (job #2166666)
#include <cstdio>
#include <algorithm>
#define MAXN 9000
#define MAXV 7000
int v[MAXN], fr[MAXV];
int main(){
FILE *in = fopen("medie.in", "r");
int n, i, j, k, a, b;
fscanf(in, "%d", &n);
for(i = 0; i < n; i++){
fscanf(in, "%d", &v[i]);
fr[v[i]]++;
}
fclose(in);
long long rez = 0;
std::sort(v, v + n);
for(i = 0; i < n; i++){
j = 0; k = n - 1;
while(v[j] < v[i] && v[k] > v[i]){
while(v[j] < v[i] && v[j] + v[k] < 2 * v[i])
j++;
while(v[k] > v[i] && v[j] + v[k] > 2 * v[i])
k--;
if(v[j] + v[k] == 2 * v[i]){
a = 0;
while(v[j + a] == v[j])
a++;
b = 0;
while(v[k - b] == v[k])
b++;
j += a;
k -= b;
rez += 1LL * a * b * fr[i];
}
}
}
for(i = 0; i <= MAXV; i++)
rez += 1LL * fr[i] * (fr[i] - 1) * (fr[i] - 2) / 6;
FILE *out = fopen("medie.out", "w");
fprintf(out, "%d", rez);
fclose(out);
return 0;
}