3504. 打工是不可能打工的

单点时限: 2.0 sec

内存限制: 256 MB

我 Ayano 就是破产,吃白菜,从这里跳下去,也绝对不打一天工!

然而现实是,没有钱就还是得打工的,否则生活无法继续啊。

现在你已经身无分文,信用卡也不欠钱,n 天后就是你的信用卡最后还款期,你必须在第 n 天结束时还清所有的借款。(这 n 天里你通过信用卡借的款项也必须在那时还清)你知道接下来 n 天每天打工的收入 ai 和你预计的开销 bi,你想要打尽量少天数的工,又不至于破产。

每天的开销是一定发生的,打工只能按天为单位打工。

输入格式
第 1 行包含一个整数 n 表示总天数。(1≤n≤200 000)
第 2 行包含 n 个整数,第 i 个整数表示 ai。
第 3 行包含 n 个整数,第 i 个整数表示 bi。(1≤ai,bi≤100 000)

输出格式
如果你在 n 天后能还清信用卡,输出最少的打工天数;如果不能,输出 Game Over!。

样例
input
3
1 2 3
1 1 1
output
1

/*
思路:很简单,当收入小于开销Game over.
否则将收入从大到小排序,只需要前i天赚够开销即可。
*/
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int flag[200001];
int main()
{
	cin>>n;
	long long sum=0;
	for(int i = 0; i < n; i++)
	{
		cin>>flag[i];
		sum+=flag[i];
	}
	long long sum2=0;
	for(int i = 0; i < n; i++)
	{
		int m;
		cin>>m;
		sum2+=m;
	}
	if(sum<sum2)
	{
		cout<<"Game Over!";
		return 0;
	}
	sort(flag,flag+n);
	sum=0;
	for(int i = n-1; i>=0; i--)
	{
		sum+=flag[i];
		if(sum>=sum2)
		{
			cout<<n-i;
			return 0;
		}
	}
 } 
发布了45 篇原创文章 · 获赞 21 · 访问量 490

猜你喜欢

转载自blog.csdn.net/qq_40394960/article/details/105119945