제출 #1263743

#제출 시각아이디문제언어결과실행 시간메모리
1263743abdelhakim장애물 (IOI25_obstacles)C++20
0 / 100
2093 ms8116 KiB
#include "obstacles.h"
#include <bits/stdc++.h>
#define ll long long
#define inf 1e17
using namespace std;

vector<ll> t;
vector<ll> h;
ll n,m;
bool free(ll x, ll y)
{
  return t[y] > h[x];
}
bool wach(ll x, ll row)
{
  ll l=x-1;
  ll r=x+1;
  ll minh=h[x];
  for (int i=0;i<row;i++)
  {
    while(r<m && free(r,i)){minh=min(minh,h[r]); r++;}
    while(l>=0 && free(l,i)){minh=min(minh,h[l]); l--;};
    if(t[i+1] <= minh)
    {
      return false;
    }
  }
  return true;
}
void initialize(std::vector<int> T, std::vector<int> H) {
  n=T.size();
  m=H.size();
  for (int i=0;i<n;i++)
  {
    t.push_back(T[i]);
  }
  for (int j=0;j<m;j++)
  {
    h.push_back(H[j]);
  }
  return;
}

bool can_reach(int L, int R, int S, int D) {
  ll maxh=0;
  for (int i=S;i<=D;i++)
  {
    maxh=max(maxh,h[i]);
  }
  ll ind=-1;
  for (int i=0;i<n;i++)
  {
    if(t[i] > maxh)
    {
      ind=i;
      break;
    }
  }
  return ind!=-1 && wach(S,ind) && wach(D,ind);
}
#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...