1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <vector>
#include <set>
#include <cstdio>

int main() {
    int perel;
    scanf("%d", &perel);
    std::vector<int> naszyjnik;
    naszyjnik.reserve(perel);
    int najpiekniejsza=0;
    std::set<int> zachwycajace;
    for (int i=0; i<perel; ++i) {
        int perla;
        scanf("%d", &perla);
        naszyjnik.emplace_back(perla);
        if (najpiekniejsza < perla) {
            zachwycajace.insert(perla);
            najpiekniejsza = perla;
        }
    }
    size_t wynik = 0;
    for (int i=perel-1; 0<=i; --i) {
        wynik = std::max(wynik, zachwycajace.size());
        while (!zachwycajace.empty() && *zachwycajace.begin() <= naszyjnik[i]) {
            zachwycajace.erase(zachwycajace.begin());
        }
        zachwycajace.insert(naszyjnik[i]);
    }
    printf("%lu\n", wynik);
}