Description
Ever the maturing businessman, Farmer John realizes that he must manage his time was tively. he has n jobs conveniently numbered 1 .. N (1 <= n <= 1,000) to accomplish (like milking the cows, cleaning the barn, mending the fences, and so on ). to manage his time when tively, he has created a list of the jobs that must be finished. job I requires a certain amount of time t_ I (1 <= t_ I <= 1,000) to complete and furthermore must be finished by time s_ I (1 <= s_ I <= 1,000,000 ). farmer John starts his day at time t = 0 and can only work on one job at a time until it is finished. even a maturing businessman likes to sleep late; help Farmer John determine the latest he can start working and still finish all the jobs on time.
N jobs, the time required for each job, and the deadline to be completed, ask when to start. Input
* Line 1: A single INTEGER: N
* Lines 2. n + 1: line I + 1 contains two space-separated integers: t_ I and s_ I output
* Line 1: the latest time farmer John can start working or-1 If Farmer John cannot finish all the jobs on time.
Question:
The start time is monotonically updated. If it can be completed from time t, it can be completed from time t' <t.
So we can divide it into two TBS.
After T is determined, perform the top deadline Task Based on greed and simulate it.
Note that there is no solution output-1. Bytes
End.
Code:
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>//by zrt//problem:using namespace std;int n;struct N{ int t,s; friend bool operator < (N a,N b){ return a.s<b.s; }}a[1005];int minn=1<<30;bool judge(int start){ int t=start; for(int i=1;i<=n;i++){ if(t+a[i].t>a[i].s) return 0; else t+=a[i].t; } return 1;}int main(){ #ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d",&a[i].t,&a[i].s); minn=min(minn,a[i].s); } sort(a+1,a+n+1); int l=0,r=minn; if(!judge(0)){ puts("-1"); goto ed; } while(r-l>1){ int m=(l+r)>>1; if(judge(m)){ l=m; }else r=m; } printf("%d\n",l); ed:;return 0;}
Bzoj 1620: [usaco Nov] Time Management