Codeforces Round #390 (Div. 2) D. Fedor and coupons 贪心+优先队列
2017-01-07 14:13
417 查看
按左端点排序,排序后拿一个优先队列维护一下右端点的最小值即可。优先队列里面始终有且仅有k条线段的右端点信息。
#include <bits/stdc++.h> using namespace std; const int maxn=300005; int n,k,res,p,rl,rr; struct ss { int l,r,id; } seg[maxn]; bool cmp(ss s1,ss s2) { return s1.l==s2.l?s1.r<s2.r:s1.l<s2.l; } priority_queue<int,vector<int>,greater<int> > que; int main() { scanf("%d%d",&n,&k); for (int i=0;i<n;++i) { scanf("%d%d",&seg[i].l,&seg[i].r); seg[i].id=i+1; } sort(seg,seg+n,cmp); for (int i=0;i<k-1;++i) que.push(seg[i].r); p=-1; for (int i=k-1;i<n;++i) { que.push(seg[i].r); if (que.top()-seg[i].l+1>res) { res=que.top()-seg[i].l+1; rr=que.top(); rl=seg[i].l; p=i; } que.pop(); } if (p==-1) { puts("0"); for (int i=0;i<k;++i) printf("%d%c",i+1,i+1==k?'\n':' '); } else { printf("%d\n",res); int cnt=0; for (int i=0;i<n;++i) { if (seg[i].l<=rl&&seg[i].r>=rr) { printf("%d%c",seg[i].id,cnt+1==k?'\n':' '); ++cnt; if (cnt==k) break; } } } return 0; }
相关文章推荐
- codeforces D. Fedor and coupons 贪心+优先队列
- Codeforces Round #390 (Div. 2) D. Fedor and coupons(区间最大交集+优先队列)
- D. Fedor and coupons(贪心+优先队列)
- Codeforces Round #390 (Div. 2)DFedor and coupons (排序+优先队列)
- Codeforces Round #390 (Div. 2) D - Fedor and coupons (贪心)
- Codeforces Round #390 (Div. 2)-DFedor and coupons(优先队列)
- D. Fedor and coupons Codeforces Round #390 (Div. 2)(优先队列)
- Codeforces Round #390 (Div. 2) D. Fedor and coupons
- Fedor and coupons CodeForces - 754D (优先队列,贪心)
- Codeforces Round #376 (Div. 2) B. Coupons and Discounts(贪心)
- Codeforces Round #390 (Div. 2) D. Fedor and coupons
- Codeforces Round #390 (Div. 2)D Fedor and coupons
- Codeforces Round #390 (Div. 2) D. Fedor and coupons
- Codeforces Round #390(Div. 2)D. Fedor and coupons【优先队列】
- codeforces round390 div2 C Fedor and coupons
- 【Codeforces Round 374 (Div 2)D】【贪心】 Maxim and Array n个数做K次±X使得乘积尽可能小
- Codeforces Round #324 (Div. 2) C. Marina and Vasya(贪心)
- Codeforces Round #280 (Div. 2) C. Vanya and Exams 贪心
- Codeforces #253 (Div. 1)C. Artem and Array ( 贪心
- cf228 div2 B. Fox and Cross ( 贪心, 模拟)