제출 #1179532

#제출 시각아이디문제언어결과실행 시간메모리
1179532gyg송신탑 (IOI22_towers)C++20
14 / 100
256 ms1832 KiB
#include "towers.h"
#include <bits/stdc++.h>
using namespace std;
#define arr array 
#define vec vector
const int N = 1e5 + 5;

int n;
arr<int, N> h;

arr<int, N> sm;
int rng(int l, int r) {
    if (l > r) return 0;
    return sm[r] - sm[l - 1];
}
void sm_cmp() {
    for (int i = 1; i <= n; i++)
        sm[i] = sm[i - 1] + (h[i] < h[i - 1] && h[i] < h[i + 1]);
}

void init(int _n, vec<int> _h) {
    n = _n;
    for (int i = 1; i <= n; i++) h[i] = _h[i - 1];

    sm_cmp();
}

int max_towers(int l, int r, int d) {
    l++, r++; assert(d == 1);
    if (l == r) return 1;

    int ans = rng(l + 1, r - 1);
    for (int i : {l, r}) {
        int cnt = (i == l || h[i] < h[i - 1]) + (i == r || h[i] < h[i + 1]);
        ans += (cnt == 2);
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...