1 条题解
-
0
C++ :
#include <stdio.h> #include <queue> #include <algorithm> using namespace std; struct stop { int zhan; int you; }s[10005]; int n,p,l; priority_queue <int> que; bool comp(stop s1,stop s2) { return s1.zhan<s2.zhan; } int solve() { int ans=0 ,pos=0,tank=p; for(int i=0;i<n;i++) { int d=s[i].zhan-pos; while(tank-d<0) { if(que.empty()) { return -1; } tank+=que.top(); que.pop(); ans++; } tank-=d; pos=s[i].zhan; que.push(s[i].you); } return ans; } int main() { int i,a; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d%d",&s[i].zhan,&s[i].you); } scanf("%d%d",&l,&p); for(i=0;i<n;i++) { s[i].zhan=l-s[i].zhan; } s[n].zhan=l; s[n++].you=0; while(!que.empty()) que.pop(); sort(s,s+n,comp); a=solve(); printf("%d\n",a); } return 0; }
- 1
信息
- ID
- 3578
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者