CF2171B Yuu Koito and Minimum Absolute Sum
题目传送门
题目大意
定义一个数组
思路
因为
- 当
a_1 和a_n 都未知时,将a_1 和a_n 都赋值为0 (因为要保证字典序最小,所以要赋值为0 ),最小值为0 。 - 当
a_1 未知,a_n 已知时,将a_1 赋值为a_n 的值,最小值为0 。 - 当
a_1 已知,a_n 未知时,将a_n 赋值为a_1 的值,最小值为0 。 - 当
a_1 和a_n 都已知时,最小值为\left|a_n-a_1\right| 。
随后输出数组
代码
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+4;
int a[N];
void solve()
{
int n;
cin >>n;
for(int i=1;i<=n;i++) cin >>a[i];
if(a[1]!=-1 && a[n]!=-1)
{
cout <<abs(a[n]-a[1])<<'\n';
for(int i=1;i<=n;i++)
{
if(a[i]==-1) cout <<0<<" ";
else cout <<a[i]<<" ";
}
}
else if(a[1]==-1 && a[n]!=-1)
{
cout <<0<<'\n';
for(int i=1;i<=n;i++)
{
if(i==1) cout <<a[n]<<" ";
else if(a[i]==-1) cout <<0<<' ';
else cout <<a[i]<<' ';
}
}
else if(a[1]!=-1 && a[n]==-1)
{
cout <<0<<'\n';
for(int i=1;i<=n;i++)
{
if(i==n) cout <<a[1]<<" ";
else if(a[i]==-1) cout <<0<<" ";
else cout <<a[i]<<" ";
}
}
else
{
cout <<0<<"\n";
for(int i=1;i<=n;i++)
{
if(a[i]==-1) cout <<0<<" ";
else cout <<a[i]<<" ";
}
}
cout <<'\n';
}
int main()
{
int t;
cin >>t;
while(t--) solve();
return 0;
}