CF1760C
题意
\(T\) 组数据,每组数据给定一个长度为 \(n\) 的序列 \(s\)。求出每个数与最大值的差(最大值本身除外),以及最大值和次大值的差(最大值的位置),按照原来的顺序输出。
做法
模拟题,十分简单,只需对原序列求最大值和次大值即可,然后再按位置输出。
Code
具体实现细节见代码。
#include <iostream>
#include <cstdio>
using namespace std;
int n,a[1000001];
int main()
{
int T;
cin>>T;
while(T--)
{
int mx1=0,mx2=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]>mx1) mx2=mx1,mx1=a[i];//注意当最大值要被更新时,要先将原来的最大值赋值给次大值
else if(a[i]>mx2) mx2=a[i];
}
for(int i=1;i<=n;i++)
{
if(a[i]==mx1) cout<<mx1-mx2<<' ';
else cout<<a[i]-mx1<<' ';
}
cout<<endl;
}
return 0;
}
还是菜。