제출 #1299065

#제출 시각아이디문제언어결과실행 시간메모리
1299065nikakh장애물 (IOI25_obstacles)C++17
0 / 100
48 ms5048 KiB
//#include "obstacles.h" #include<bits/stdc++.h> using namespace std; int n,m,lenA,lenB,lenT; vector<int>t,h,a,b,ter; void initialize(vector<int>T,vector<int>H){ n=(int)T.size(),m=(int)H.size(); t=T; for(int i=0;i<m;i++){ h[i]=H[i]; if(h[i]>=3)ter.push_back(i); if(h[i]>=t[0])a.push_back(i); if(!h[i])b.push_back(i); } lenA=(int)a.size(),lenB=(int)b.size(),lenT=(int)ter.size(); return; } bool can_reach(int l,int r,int s,int d){ if(s>d)swap(s,d); if(t==vector<int>{2,1,3}){ int idx=upper_bound(ter.begin(),ter.end(),s)-ter.begin(); if(idx!=lenT&&ter[idx]<d)return 0; int i1=upper_bound(a.begin(),a.end(),s)-a.begin(); if(i1==lenA)return 0; if(a[i1]>d)return 1; int i2=upper_bound(b.begin(),b.end(),s)-b.begin(); if(i2==lenB)return 0; if(b[i2]>a[i1])return 0; int ub=upper_bound(a.begin(),a.end(),d)-a.begin(); int lb=lower_bound(b.begin(),b.end(),d)-b.begin(); if(lb==lenB)return 0; if(ub==lenA)return 1; return b[lb]<a[ub]; } int ub=upper_bound(a.begin(),a.end(),s)-a.begin(); if(ub==lenA)return 0; return a[ub]>d; }
#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...