Codeforces Round #446 (Div. 2) A. 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 <string>
#include <cstring>
#include <stdio.h>
#include <algorithm>
#define inf 0x7fffffff
using namespace std;

const static int N = 1e6 + 10;

typedef long long ll;
int array[N];
int main()
{
	int n, m, temp;
	while (cin >> n) {
		ll ans = 0;
		for (int i = 0; i < n; i ++) {
			cin >> temp; ans += temp;
		}
		int min , minn;
		min = minn = -inf;
		for (int i = 0 ; i < n; i ++) {
			scanf("%d",&temp);
			if(min < temp) {
				minn = max(minn , min);
				min = temp;
			} else if (minn < temp) {
				minn = temp;
			}
		}
		if(ans > min + minn) puts("no");
		else puts("yes");
	}
}

然后在附上一个python写的版本 但是很奇怪  python写的比c++ 写的块  

而且 PyPy的和Python写的效率也是迷  有时候PyPy快  有时候Python更快  如果你知道也可以告诉我下~

n = int(input())

ans = 0

temp = n
q = input().split()
for obj in q :
	ans = ans + int(obj)
#print("cin is complate")
temp = n
maxx = maxxx = -999999999999
q = input().split()

for obj in q:
	test = int(obj)
	if maxx < test:
		if maxxx < maxx:
			maxxx = maxx
		maxx = test
	elif maxxx < test:
		maxxx = test

#print("cin later is complate")
#print("ans = %d maxx = %d maxxx = %d" % (ans , maxx , maxxx))
if ans <= maxx + maxxx :
	print("yes")
else :
	print("no")


还有一个java版本  java的版本比上两种语言慢

import java.io.*;
import java.util.*;


public class Main {
	public static void main(String[] args) throws Exception {
		Scanner stdin = new Scanner(System.in);
		int n, temp , max ,maxx;
		long ans = 0;
		n = stdin.nextInt();
		for (int i = 0; i < n; i ++) {
			temp = stdin.nextInt();
			ans += temp;
		}
		max = maxx = -999999999;
		for (int i = 0; i < n; i ++) {
			temp = stdin.nextInt();
			if(max < temp) {
				if(maxx < max) maxx = max;
				max = temp;
			} else if (maxx < temp) {
				maxx = temp;
			}
		}
		if(ans <= max + maxx) System.out.print("yes");
		else System.out.print("no");
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值