1. 程式人生 > >Codeforces 892A. Greed

Codeforces 892A. Greed

A. Greed time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output

Jafar has n cans of cola. Each can is described by two integers: remaining volume of cola ai and can's capacity bi (ai  ≤  bi).

Jafar has decided to pour all remaining cola into just 2 cans, determine if he can do this or not!

Input

The first line of the input contains one integer n (2 ≤ n ≤ 100 000

) — number of cola cans.

The second line contains n space-separated integers a1, a2, ..., an (0 ≤ ai ≤ 109) — volume of remaining cola in cans.

The third line contains n space-separated integers that b1, b2, ..., bn (ai ≤ bi ≤ 109) — capacities of the cans.

Output

Print "YES" (without quotes) if it is possible to pour all remaining cola in 2

 cans. Otherwise print "NO" (without quotes).

You can print each letter in any case (upper or lower).

Examples input
2
3 5
3 6
output
YES
input
3
6 8 9
6 10 12
output
NO
input
5
0 0 5 0 0
1 1 8 10 5
output
YES
input
4
4 1 0 3
5 2 2 3
output
YES
Note

In the first sample, there are already 2

 cans, so the answer is "YES".

感覺這題挺考思維的。

題目大意:分別給你瓶子裡剩下的可樂的體積,再給出每個瓶子的容積。問能不能把所有可樂都倒進兩個杯子裡面

倒的話肯定是倒進容積最大的前兩個瓶子裡面,這樣最保險

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll num[100010];
bool cmp(int a,int b){
	return a>b;
}
int main(){
	ll sum=0;
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		int a;
		cin>>a;
		sum+=a;
	}
	for(int i=0;i<n;i++){
		cin>>num[i];
	}
	sort(num,num+n,cmp);
	if(num[0]+num[1]>=sum) cout<<"YES"<<endl;
	else cout<<"NO"<<endl;
}