제출 #1369213

#제출 시각아이디문제언어결과실행 시간메모리
1369213leolin0214송신탑 (IOI22_towers)C++20
23 / 100
4069 ms2720 KiB
#include "towers.h"

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

#define ff first
#define ss second
#define pii pair<int, int>

using namespace std;

vector<int> h;

void init(int N, std::vector<int> H) {
    int n = N;
    H.insert(H.begin(), 2e9);
    H.push_back(2e9);
    
    h = H;
}

int max_towers(int L, int R, int D) {

    L++, R++;
    int d = D;

    vector<int> a(h.begin() + L, h.begin() + R+1);
    int n = a.size();
    a.insert(a.begin(), 2e9);
    a.push_back(2e9);

    vector<int> o(n);
    iota(o.begin(), o.end(), 1);
    sort(o.begin(), o.end(), [&] (int i, int j) {return a[i] < a[j];});

    vector<int> v(n+2);
    int ans = 0;
    for (int i: o) {
        int l = i-1, r = i+1;
        while (a[l] < a[i] + d) l--;
        while (a[r] < a[i] + d) r++;
        int sum = accumulate(v.begin() + l+1, v.begin() + r, 0ll);
        if (sum) continue;
        for (int j=l+1; j<r; j++) v[j] = 1;
        ans++;
    }

    return ans;
}   
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…