Submission #16277

#TimeUsernameProblemLanguageResultExecution timeMemory
16277eaststar버스 (JOI14_bus)C++14
0 / 100
226 ms7728 KiB
#include <stdio.h> #include <algorithm> using namespace std; struct data{ int a,b,x,y; bool operator<(const data&r)const{ if(a==r.a)return x>r.x; return a<r.a; } }a[300010]; struct ans{ int s,e; bool operator<(const ans&r)const{ if(e==r.e)return s>r.s; return e>r.e; } }b[100010],t; int st[100010],chk[100010],mn[100010],cnt,n,m; int f(int p,int t){ int i; if(p==n)return t; if(chk[p])return mn[p]; chk[p]=1,mn[p]=1e9; for(i=st[p];a[i].a==p&&a[i].x>=t;++i)mn[p]=min(mn[p],f(a[i].b,a[i].y)); return mn[p]; } int main(){ int i,q; scanf("%d%d",&n,&m); for(i=1;i<=m;++i)scanf("%d%d%d%d",&a[i].a,&a[i].b,&a[i].x,&a[i].y); sort(a+1,a+m+1); for(i=1;i<=m;++i)if(a[i].a!=a[i-1].a)st[a[i].a]=i; for(i=1;a[i].a==1;++i)b[cnt].s=a[i].x,b[cnt++].e=f(1,a[i].x); sort(b,b+cnt); scanf("%d",&q); for(;q--;){ scanf("%d",&t.e); i=lower_bound(b,b+cnt,t)-b; printf("%d\n",i==cnt?-1:b[i].s); } 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...