Submission #1225853

#TimeUsernameProblemLanguageResultExecution timeMemory
1225853the_coding_pooh송신탑 (IOI22_towers)C++20
4 / 100
261 ms7716 KiB
#include "towers.h"
#include <bits/stdc++.h>
#define uwu return

using namespace std;

#define fs first
#define sc second

#define all(x) x.begin(), x.end()

const int SIZE = 1e5 + 5, LOG_C = 19;

int sps_tbl[LOG_C][SIZE], H[SIZE];

int pos_max(int a, int b){
    if(H[a] > H[b])
        return a;
    return b;
}

void output(long long a, bool b){
    if(b)
        cerr << '\n';
    else
        cerr << a << ' ';
    return;
}

int query(int l, int r){
    int lv = __lg(r - l + 1);
    uwu pos_max(sps_tbl[lv][l], sps_tbl[lv][r - (1 << lv) + 1]);
}

void init(int N, vector<int> _H) {
    for (int i = 0; i < N; i++){
        sps_tbl[0][i] = i;
        H[i] = _H[i];
    }
    for (int lv = 1; lv < LOG_C; lv++){
        for (int i = 0; i < N - (1 << lv) + 1; i++){
            sps_tbl[lv][i] = pos_max(sps_tbl[lv - 1][i], sps_tbl[lv - 1][i + (1 << (lv - 1))]);
        }
    }
    uwu;
}

int max_towers(int L, int R, int D) {
    int rt = query(L, R);
    if(abs(H[L] - H[rt]) >= D && abs(H[R] - H[rt]) >= D)
        uwu 2;
    uwu 1;
}
#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...