제출 #1266037

#제출 시각아이디문제언어결과실행 시간메모리
1266037thenpc장애물 (IOI25_obstacles)C++20
0 / 100
64 ms6728 KiB
#include <bits/stdc++.h>
#include "obstacles.h"
using namespace std;
#define ll long long
int n,m,cnt[200005],cnt1[200005];
bool check[200005];
void initialize(vector<int> t,vector<int> h){
   n=t.size();
   m=h.size();
   for(int i=0;i<m;i++){
     check[i]=false;
   }
  for(int i=0;i<m;i++){
    if(h[i]==0){
      check[i]=true;
      int r=i+1,l=i-1;
      while(true){
        if(l<0){
          break;
        }
        if(h[l]<=2){
          check[l]=true;
          l--;
        }
        else{
          break;
        }
      }
      while(true){
        if(r>=0){
          break;
        }
        if(h[r]<=2){
          check[r]=true;
          r++;
        }
        else{
          break;
        }
      }
      i=r;
    }
  }
  for(int i=0;i<m;i++){
    if(t[0]>h[i]){
      if(i==0){
        cnt[i]=0;
        continue;
      }
      cnt[i]=cnt[i-1];
    }
    else{
      if(i==0){
        cnt[i]=1;
        continue;
      }
      cnt[i]=cnt[i-1]+1;
    }
  }
  for(int i=0;i<m;i++){
    if(t[2]>h[i]){
      if(i==0){
        cnt1[i]=0;
        continue;
      }
      cnt1[i]=cnt1[i-1];
    }
    else{
      if(i==0){
        cnt1[i]=1;
        continue;
      }
      cnt1[i]=cnt1[i-1]+1;
    }
  }
}
bool can_reach(int l,int r,int s,int d){
  if(cnt[s]==cnt[d]){
    return true;
  }
  if(cnt1[s]==cnt1[d]&&check[s]&&check[d]){
    return true;
  }
  return false;
}
#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...