Solution
发现只要选择任意两个数,都可以通过一次操作将他们两个放在相邻的地方。
若设处理的两个数为 和 ,
如果 ,只要翻转 即可。
如果 ,只要翻转 即可。
那么,只要找到序列中最大的两个数,加和输出即可。
时 ,空 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include<bits/stdc++.h> using namespace std;
int main() { int T,max1,max2; cin>>T; while(T--) { int n,k; cin>>n>>max1>>max2; if(max1<max2) swap(max1,max2); for(int i=3;i<=n;i++) { cin>>k; if(k>max1) max2=max1,max1=k; else if(k>max2) max2=k; } cout<<max1+max2<<endl; } return 0; }
|