poj2010
2015-11-17 21:53
253 查看
</pre><pre name="code" class="html"><img src="https://img-blog.csdn.net/20151117215338104?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><pre name="code" class="html">#include"iostream" #include"cstdio" #include"queue" #include"algorithm" using namespace std; struct Cow{int s,f;}cow[101000]; bool cmp(const Cow &a,const Cow &b) { if(a.s!=b.s) return a.s>b.s; else return a.f<b.f; } int main() { priority_queue<int>Q; int n,c,f,i,nu,dpl[101000],dpr[101000]; while(scanf("%d%d%d",&n,&c,&f)!=EOF) { for(i=1;i<=c;i++) cin>>cow[i].s>>cow[i].f; sort(cow+1,cow+1+c,cmp); nu=n/2; int sum=0; while(!Q.empty()) Q.pop(); for(i=1;i<=nu;i++) Q.push(cow[i].f),sum+=cow[i].f; dpl[nu]=sum; for(i=nu+1;i<=c;i++) { if(cow[i].f>=Q.top()) dpl[i]=sum; else { sum=sum-Q.top()+cow[i].f; Q.pop(); Q.push(cow[i].f); dpl[i]=sum; } } sum=0; while(!Q.empty()) Q.pop(); for(i=c;i>=c-nu+1;i--) Q.push(cow[i].f),sum+=cow[i].f; dpr[c-nu+1]=sum; for(i=c-nu;i>=1;i--) { if(cow[i].f>=Q.top()) dpr[i]=sum; else { sum=sum-Q.top()+cow[i].f; Q.pop(); Q.push(cow[i].f); dpr[i]=sum; } } bool flag=false; for(i=nu+1;i<=c-nu;i++) { if(cow[i].f+dpl[i-1]+dpr[i+1]<=f) { cout<<cow[i].s<<endl; flag=true; break; } } if(!flag) cout<<"-1"<<endl; } }
相关文章推荐
- Firebird 3.0 新功能
- UISegmentedControl
- LeetCode79——Word Search
- Webkit之常用对象API梳理
- hadoop——倒排索引
- Reverse Words in a String
- 【郝斌数据结构自学笔记】12-13_连续存储数组的算法演示
- JMeter处理Cookie与Session
- 【python游戏编程之旅】第二篇--pygame中的IO、数据
- 五笔字根助记词
- 五笔字根助记词
- 使用ViewDragHelper实现slidemenu
- 拓扑排序
- Java实用手册
- centos7配置samba
- Android 快速创建一个新的线程
- 打印函数名,函数名前加n个*为什么结果相同?
- linux - ubuntu 配置 ssh
- LeetCode() Rotate Image
- bhp 阅读笔记 OSX 下 setuptools pip 安装