Submission #1086113

# Submission time Handle Problem Language Result Execution time Memory
1086113 2024-09-09T15:12:39 Z duytuandao21 Po (COCI21_po) C++17
20 / 70
1000 ms 2908 KB
#include<bits/stdc++.h>
using namespace std;

const int N = 2e5 + 7;
const int inf = 1e9 + 7;
const long long infll = 1e18 + 7;

int n;
int bit[N], a[N];
pair<int, int> b[N];
bool cmp(pair<int, int> x, pair<int, int> y) {
    if (x.first == y.first) return x.second < y.second;
    return x.first < y.first;
}
void update(int x, int v) {
    while (x <= n) {
        bit[x] = min(bit[x], v);
        x += (x & -x);
    }
}
int get(int l, int r) {
    int ans = inf;
    while (l <= r) {
        if (r - (r & -r) >= l) {
            ans = min(ans, bit[r]);
            r -= (r & -r);
        } else {
            ans = min(ans, a[r]);
            r--;
        }
    }
    return ans;
} 
int main() 
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i++) bit[i] = inf;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        update(i, a[i]);
        b[i] = make_pair(a[i], i);
    }
    sort (b + 1, b + 1 + n, cmp);
    int res = 0;
    for (int i = 1; i <= n; i++) {
        if (b[i].first != b[i - 1].first) {
            res++; 
        }
        else {
            if (get(b[i - 1].second, b[i].second) < b[i].first) res++;
        }
    }
    cout << res;
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Execution timed out 1086 ms 348 KB Time limit exceeded
3 Execution timed out 1032 ms 348 KB Time limit exceeded
4 Execution timed out 1046 ms 1624 KB Time limit exceeded
5 Execution timed out 1026 ms 1624 KB Time limit exceeded
6 Correct 27 ms 2908 KB Output is correct
7 Execution timed out 1093 ms 2904 KB Time limit exceeded