제출 #1359012

#제출 시각아이디문제언어결과실행 시간메모리
1359012coderg300711장애물 (IOI25_obstacles)C++20
24 / 100
87 ms23044 KiB
#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pii pair<int,int>
#define pll pair<long long,long long>
#define yes cout<<"Yes\n"
#define no cout<<"No\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define rsz resize
#define ass assign
#define F(i,l,r) for(int i=(l);i<(r);++i)
typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;
template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>;
#define each(a,x) for(auto a:x)
#define FOR(i,a) for(int i=0;i<(a);i++)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define eb emplace_back
#define ft front()
#define V vector

#include "obstacles.h"

const int maxm=200005,LOG=20;

int st[maxm][LOG],lg[maxm],mx_temp;

void initialize(V<int> t,V<int> h){
	int m=sz(h);
	mx_temp=-1;
	each(tt,t)mx_temp=max(mx_temp,tt);
	FOR(i,m)st[i][0]=h[i];
	F(j,1,LOG){
		for(int i=0;i+(1<<j)<=m;i++)st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
	}
    lg[1]=0;
    F(i,2,m+1)lg[i]=lg[i/2]+1;
}

bool can_reach(int l,int r,int s,int d){
	int start=min(s,d),end=max(s,d),mx=max(st[start][lg[end-start+1]],st[end-(1<<lg[end-start+1])+1][lg[end-start+1]]);
	return mx_temp>mx;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…