PKU 3618 Exploration
http://poj.org/problem?id=3618
シミュレーション。
n個の点が座標xiにある。この時、原点からスタートして、まだ訪れていなくて、原点に最も近い点から順番に訪れていく。1単位距離移動するのに1単位時間かかる。時間tまでに何個の点を回れるか?という問題。
多分難しくはないほうの問題だとは思います。
愚直にやりました。
PI in[50000]; main(){ ll t,n; cin>>t>>n; rep(i,n){ int x; cin>>x; if(x>0)in[i]=mp(x,0); else in[i]=mp(-x,1); } sort(in,in+n); ll time=0; int ans=0; int x=0; while(ans<n){ if(in[ans].S!=(x<0))time+=abs(in[ans].F+abs(x)); else time+=abs(in[ans].F-abs(x)); if(in[ans].S)x=-in[ans].F; else x=in[ans].F; if(time>t)break; ++ans; } cout<<ans<<endl; }