In pratica il primo 5000 è un valore rilevato.
Penso che il tuo codice sbagli:
4
2 0 -2 0
Secondo il tuo algoritmo le altezze rilevate sono 5002,5002,5000,5000 quando in realtà esiste anche il primo 5000, quindi dovrebbero essere: 5000,5002,5002,5000,5000
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream in;
in .open("input.txt");
int n;
in >> n;
int rilevazioni[n], array[n];
for(int i = 0; i < n; i++) {
in >> rilevazioni[i];
array[i] = 0;
}
for(int i = 1; i < n; i++) {
rilevazioni[i] += rilevazioni[i - 1];
}
for(int i = 0; i < n; i++){
for(int z = i + 1; z < n; z++) {
if(rilevazioni[i] == rilevazioni[z])
array[i]++;
}
}
int maggiore = 0;
int b = 0;
for(int i = 1; i < n; i++) {
if(array[i] > array[maggiore])
maggiore = i;
}
rilevazioni[maggiore] += 5000;
ofstream ou;
ou.open("output.txt");
ou << rilevazioni[maggiore];
return 0;
}