码迷,mamicode.com
首页 > 编程语言 > 详细

codeforces 892A - Greed - [超级大水题][O(n)数组最大和次大]

时间:2017-11-21 22:02:25      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:tput   index   ide   class   scribe   nta   ecif   span   using   

题目链接:https://cn.vjudge.net/problem/CodeForces-892A

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).

Example

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

 

贼JR的水,根本不需要题解……

只是想贴一个记录一下O(n)得到数组内最大和次大的for循环代码,免得以后什么时候脑抽忘记了下不出来僵掉了……

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int n;
int main()
{
    scanf("%d",&n);
    LL sum=0;
    for(int i=1,tmp;i<=n;i++)
    {
        scanf("%d",&tmp);
        sum+=tmp;
    }
    LL max1=-1,max2=-2;
    for(int i=1,tmp;i<=n;i++)
    {
        scanf("%d",&tmp);
        if(max2<=max1 && max1<=tmp) max2=max1,max1=tmp;
        else if(max2<tmp && tmp<=max1) max2=tmp;
    }
    if(max1+max2 >= sum) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}

 

codeforces 892A - Greed - [超级大水题][O(n)数组最大和次大]

标签:tput   index   ide   class   scribe   nta   ecif   span   using   

原文地址:http://www.cnblogs.com/dilthey/p/7875359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!