改考卷
時間限制:C/C++語言 2000MS讯蒲;其他語言 4000MS
內存限制:C/C++語言 65536KB蕊连;其他語言 589824KB
題目描述:
在上小學的時候楣富,我們經常碰到這樣的事:考完試后老師懶得改試卷瞧栗,于是讓我們同桌相互交換試卷后為對方批改海铆。但是后來老師發(fā)現(xiàn)這樣作容易出現(xiàn)作弊卧斟,于是他想了一個新辦法殴边。老師將同學分成了 n 個組珍语,其中編號為??的組中有???? 個人。然后老師會按某種順序依次訪問這些組是偷。
對于他訪問的第一個組募逞,他會將這組內的所有試卷都收走,放置在桌上刺啦;對于他后續(xù)訪問的每一個組纠脾,首先他會從桌上的試卷最上方拿出該組對應人數(shù)數(shù)量的試卷蜕青,隨機分配給該組每個人一張試卷讓他們進行批改捧韵,而后再將這組學生自己考的試卷收走放置在桌面試卷的最下方。當他訪問完所有的組后他會將桌面上剩余的所有試卷隨機分配給他第一個訪問的組的學生進行批改再来。
但他發(fā)現(xiàn)這種方法有時候也會出現(xiàn)問題:有可能在中途訪問到某個組的時候桌面上的試卷不夠分配給這組學生每人一張;也有可能最后會有學生分配到批改自己的試卷搜变,而且這兩種情況是否出現(xiàn)是與他訪問每個組的順序有關的≌肼現(xiàn)在他想知道是否存在一種訪問順序能夠使以上兩種情況都不出現(xiàn),順利完成試卷批改呢殖侵?
輸入
第一一個整數(shù)??镰烧,表示學生組數(shù)。2 ≤ ?? ≤ 30
第二行包含??個整數(shù)怔鳖,??1 ,??2 ,…,???? ,分別表示每組學生的人數(shù)度陆。1 ≤ ???? ≤ 10000
輸出
若存在一種訪問順序能使試卷順利批改完成献幔,輸出 Yes,否則輸出 No蜡感。
樣例輸入
Input Sample 1
2
10 20
Input Sample 2
4
2 3 3 1
樣例輸出
Output Sample 1
No
Input Sample 2
Yes
Hint
對于第 2 組樣例铸敏,我們可以選擇先訪問人數(shù)為 3 的組悟泵,再訪問人數(shù)為 3 的組,再訪問人數(shù)
為 1 的組糕非,最后訪問人數(shù)為 2 的組球榆。
#include <iostream>
using namespace std;
/*解題思路:
*條件1:每次分配的時候試卷必須夠
*條件2:最后分配的時候禁筏,不能改到自己組的卷,也就是自己的卷必須已經被前面的組改過了
*得出目標條件:
//*1. 將試卷數(shù)最多的組作為第一組每强,以滿足條件1
* 2. 第一組的試卷總數(shù)必須少于等于其余所有組的試卷數(shù)總和州刽,以滿足條件2*/
int main()
{
int n;
while (cin >> n)
{
int sum = 0, max = 0;
for (int i = 0; i < n; ++i)
{
int si;
cin >> si;
sum += si;
if (si > max)
max = si;
}
if (max <= sum - max)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}