CF1654A Solution

  1. 1. Solution

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;
}