RT(题目版没讨论我怕看不见)
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
int t;
long long s[200010];
int main()
{
cin>>t;
memset(s,0,sizeof(s));
for(int q=1; q<=t; q++)
{
int n;
long long a[200010];
cin>>n;
for(int i=1; i<=n; i++) cin>>a[i];
while(1)
{
bool flag=true;
for(int i=1; i<=n; i++)
{
if(a[i]<0)
{
if(i==n)
{
if(a[i-1]>0)
{
if((a[i]*=-1)>a[i-1])
{
a[i]*=-1;
a[i-1]*=-1;
cout<<a[i]<<" 1"<<endl;
flag=false;
}
else cout<<a[i]<<" 2"<<endl;
}
else
{
a[i]*=-1;
a[i-1]*=-1;
cout<<a[i]<<" 3"<<endl;
flag=false;
}
}
else
{
if(a[i+1]<0)
{
a[i]*=-1;
a[i+1]*=-1;
cout<<a[i]<<" 4"<<endl;
flag=false;
}
else
{
if(a[i+1]==0)
{
a[i]*=-1;
cout<<a[i]<<" 5"<<endl;
flag=false;
}
else
{
if((a[i]*=-1)>a[i+1])
{
a[i]*=-1;
a[i+1]*=-1;
cout<<a[i]<<" 6"<<endl;
flag=false;
}
else cout<<a[i]<<" 7"<<endl;
}
}
}
}
}
if(flag==true)
{
for(int i=1; i<=n; i++)
{
// cout<<i<<"="<<a[i]<<endl;
s[q]+=a[i];
}
break;
}
}
}
for(int q=1; q<=t; q++) cout<<s[q]<<endl;
return 0;
}
打注释的是我用来排bug的,然后现在就很迷茫,调了半小时了还是有两个样例不对,输出如下
3
13
6
41
2