记录编号 468059 评测结果 AAAAAAAAAA
题目名称 烤鸡翅 最终得分 100
用户昵称 GravatarFisher. 是否通过 通过
代码语言 C++ 运行时间 0.181 s
提交时间 2017-10-31 17:16:42 内存使用 2.46 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#define ll long long 
using namespace std;
/*
	反悔策略的贪心;
	能买鸡子就卖;
	卖不了,如果前面有一个比当前的还贵;
	就不卖给之前那个孩儿,卖给现在的;
	证明:
	能卖就卖;卖不了反悔;
	反悔的是比现在卖的贵的;
	所以反悔了,答案不变,但是剩余可利用的就多了;
	剩余的多,未来可能就可以多卖; 
*/
inline int read(){
	int x=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	return x*f;
}
const int maxn=250010;
int n;
int x[maxn],y[maxn];
ll rest;
bool vis[maxn];
priority_queue<int>q;
int main(){
	freopen("wing.in","r",stdin);
	freopen("wing.out","w",stdout);
	n=read();
	for(int i=1;i<=n;i++)x[i]=read();
	for(int i=1;i<=n;i++)y[i]=read();
	int ans=0;
	for(int i=1;i<=n;i++){
		if(x[i]+rest>=y[i]){
			rest=rest+(ll)(x[i]-y[i]);
			q.push(y[i]);
			ans++;
		}
		else{
			if(q.empty()){rest+=(ll)x[i];continue;}
			int tou=q.top();
			if(tou>y[i]){
				q.pop();
				rest=(ll)(tou-y[i])+rest+(ll)x[i];
				q.push(y[i]);
			}
			else rest+=(ll)x[i];
		}
	}
	cout<<ans<<endl;
	return 0;
}