제출 #1299796

#제출 시각아이디문제언어결과실행 시간메모리
1299796theiuliusObstacles for a Llama (IOI25_obstacles)C++20
24 / 100
234 ms17600 KiB
#include "obstacles.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ff first
#define ss second
#define pb push_back
#define endl "\n"
int n = 0, m = 0;   
const int N = 200005;
set<int> se;
vector<int> t, h;

void initialize(std::vector<int> T, std::vector<int> H){
    t = T; h = H;
    n = t.size(); m = h.size();

    
    for (int j = 0; j < m; j++){
        if (t[n - 1] <= h[j]){
            se.insert(j);
        }
    }
}

bool can_reach(int L, int R, int s, int d){
    if (s > d){
        swap(s, d);
    }

    if (s + 1 == d){
        return 1;
    }

    int l = -1;
    if (s + 1 < m && t[0] > h[s + 1]){ // s-is marjvniv
        l = s + 1;
    }else if (t[0] > h[s]){ // s-is dabla
        l = s;
    }else if (s - 1 >= 0 && t[0] > h[s - 1]){ // s-is marcxniv
        l = s - 1;
    }

    int r = -1;
    if (d - 1 >= 0 && t[0] > h[d - 1]){ // d-is marcxiv
        r = d - 1;
    }else if (t[0] > h[d]){ // d-is dabla
        r = d;
    }else if (d + 1 < m && t[0] > h[d + 1]){ // d-is marjvniv
        r = d + 1;
    }
    if (l == -1 || r == -1){
        return 0;
    }

    auto itl = se.lower_bound(l);
    auto itr = se.lower_bound(r);
    if (itl == itr){
        return 1;
    }
    return 0;
}
#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...