제출 #1362998

#제출 시각아이디문제언어결과실행 시간메모리
1362998nicolo_010Wall (IOI14_wall)C++20
24 / 100
379 ms31204 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#include "wall.h"

void buildWall(int n, int k, int op[], int left[], int right[], int height[], int f[]){
    for (int i=0; i<n; i++) {
        f[i] = 0;
    }
    vector<vector<int>> stop(n), start(n);
    for (int i=0; i<k; i++) {
        if (op[i] == 2) break;
        int l = left[i], r = right[i];
        start[l].push_back(height[i]);
        stop[r].push_back(height[i]);
    }
    multiset<int> ms;
    ms.insert(0);
    for (int i=0; i<n; i++) {
        for (auto x : start[i]) {
            ms.insert(x);
        }
        f[i] = *ms.rbegin();
        for (auto x : stop[i]) {
            ms.erase(ms.find(x));
        }
    }
    for (int i=0; i<n; i++) {
        start[i].clear();
        stop[i].clear();
    }
    for (int i=0; i<k; i++) {
        if (op[i] == 1) continue;
        int l = left[i], r = right[i];
        start[l].push_back(height[i]);
        stop[r].push_back(height[i]);
    }
    ms.clear();
    ms.insert(1e9);
    for (int i=0; i<n; i++) {
        for (auto x : start[i]) {
            ms.insert(x);
        }
        f[i] = min(f[i], *ms.begin());
        for (auto x : stop[i]) {
            ms.erase(ms.find(x));
        }
    }
    return;
}

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