天子与诸侯
描述:
在周朝,天子分天下而诸侯治天下,但维持诸侯均势是一个令人头痛的问题。
位于镐京的周天子等人开创性的提出,当周天子直属军队的军力大于等于 诸侯中军力前三之和的时候,便可保诸侯均势,天下太平。
现在,周天子手上收集了所有诸侯国的军力数据,希望你能告诉他周天子的军队至少需要多少军力才能维持诸侯均势。
输入:
输入数据共包含两行。
第一行一个整数 n n n,表示诸侯国数量,题目保证 3 ≤ n ≤ 1000 3≤n≤1000 3≤n≤1000。
第二行 n n n 个整数 P 1 , P 2 , . . . , P n P_1,P_2,...,P_n P1,P2,...,Pn,分别表示每个诸侯国的军力 p p p,题目保证 0 ≤ p ≤ 1 e 8 0≤p≤1e8 0≤p≤1e8。
输出:
一行一个整数,表示周天子维持诸侯均势的最少军力。
样例输入:
6
12 9 6 100 0 4
样例输出:
121
样例输入:
10
0 0 0 0 0 0 0 0 0 0
样例输出:
0
样例输入:
10
0 0 0 1 9 8 63 0 9 1
样例输出:
81
注释:
对于第一组样例,军力前三的诸侯分别拥有 100,12 和 9 军力,周天子至少需要 121 军力维持均势。
对于第二组样例,军力前三的诸侯都只有 0 军力,因此周天子无需一兵一卒, 0 军力就能维持均势。
关于测试数据:
题目保证,对于 20% 的测试数据, n = 3 n=3 n=3;
题目保证,对于 40% 的测试数据, P 1 , P 2 , . . . , P n P_1,P_2,...,P_n P1,P2,...,Pn 将以降序或升序给出。
C++代码实现
#include<iostream>
using namespace std;
int main(){
int n,p;
int first=0,second=0,third=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>p;
if(p>first){
third=second;
second=first;
first=p;
}
else if(p>second){
third=second;
second=p;
}
else if(p>third)
third=p;
}
p=first+second+third;
cout<<p;
}