Fila di grattacieli 10/100

#pragma GCC optimize("Ofast")
#pragma GCC optimizer("unroll-loops")

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    ios::sync_with_stdio(0);
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);

    int64_t N; cin >> N;
    pair <int64_t, int64_t> Cpy[N];
    int64_t H[N];
    for(size_t i = 0; i < N; i++) {
        cin >> H[i];
        Cpy[i].first = H[i];
        Cpy[i].second = i; 
    }
    sort(Cpy, Cpy+N, greater<pair <int64_t, int64_t>>());

    if(N == 1) cout << 1;
    else if(Cpy[0].first != Cpy[1].first) cout << N;
    else {
        int64_t Res = 1;
        int64_t Appo = Cpy[0].first;
        for(size_t i = 0; i < N; i++) {
            if(Appo != Cpy[i].first) break;
            
            Appo = Cpy[i].first;
            int64_t Calc = 1;

            for(size_t j = Cpy[i].second-1; j >= 0; j--) {
                if(H[j] >= Appo) {
                    Calc++;
                    break;
                }
                Calc++;
            }
            for(size_t j = Cpy[i].second+1; j < N; j++) {
                if(H[j] >= Appo) {
                    Calc++;
                    break;
                }
                Calc++;
            }
            Res = max(Res, Calc);
        }
        cout << Res;
    }
}

Buongiorno a tutti, stavo provando a fare questo problema e penso che l’idea risolutiva sia giusta, tuttavia ricevo degli output errati in 5 testcase e non riesco a capire il perché. Se qualcuno riesce a trovarmi dei controesempi mi sarebbe di grande aiuto. Grazie

Prova con questo input:
5
1 2 2 9 9

Ok grazie ho risolto il problema però non mi è chiaro come mai il size_t e il int64_t facevano saltare tutto

Il valore di Cpy[i].second può essere 0, quindi in:
for(size_t j = Cpy[i].second-1; j >= 0; j–)
la variabile size_t j ritorna un valore errato.

Ah giusto hai ragione me ne ero scordato. Grazie di tutto.