问题标题: 小C的工作(work)

0
0
已解决
陶彦辰
陶彦辰
中级守护
中级守护
  • #include<bits/stdc++.h> using namespace std; const int N=200010; struct work{ long long begin,end,len; }a[N]; bool cmp(work x,work y){ if(x.begin==y.end){ return x.begin>y.begin; } return x.end>y.end; } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].begin>>a[i].len; a[i].end=a[i].begin+a[i].len; } sort(a+1,a+n+1,cmp); long long ans=a[1].begin; for(int i=2;i<=n;i++){ if(ans<a[i].end){ ans-=a[i].len; }else{ ans=a[i].begin; } } cout<<ans; return 0; }

0
已采纳
李北辰
李北辰
资深守护
资深守护

​​​​定义一个结构体node,由long long类型的l,r和t组成

定义一个node类型的数组a

定义一个cmp排序规则,按照r从小到大排序

主函数内输入n,再循环输入a[i].l和a[i].t,并赋值a[i].r=a[i].l+a[i].t

对a数组按照cmp进行排序

定义一个long long 型的ans并赋初值为2e9+5

for循环倒序遍历a数组,每次取ans为min(ans-a[i].t,a[i].l)

输出ans

 

采纳采纳!

有问题回复我哟

 

 

0
0
我要回答