代码:
#include<bits/stdc++.h>
#define MAXN 10000
#define int1 long long
int a[MAXN][MAXN],b[MAXN*MAXN][2];
long double un[MAXN]={0.0};
int main()
{
long long m,n,s,time;
long double ave;
scanf("%lld %lld",&n,&m);
for(long long i=1;i<=m;++i)
{
s=0;
for(long long j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
s+=a[i][j];
}
ave=(double)s/(double)n;
for(long long j=1;j<=n;++j)
{
un[i]+=(double)(a[i][j]-ave)*(double)(a[i][j]-ave);
}
}
for(int1 i=1;i<=m;++i)
{
s=0;
for(int1 j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
s+=a[i][j];
}
ave=(double)s/(double)n;
for(int1 j=1;j<=n;++j)
{
un[i]+=(double)(a[i][j]-ave)*(double)(a[i][j]-ave);
}
un[i]/=(double)n;
}
time=0;
for(int1 i=n-1;i>=0;--i)
{
double M=-1;
int t=0;
for(int1 j=0;j<i;++j)
{
if(un[j]>M)
{
M=un[j];
t=j;
}
}
if(un[i]<M)
{
b[time][0]=t;
b[time][1]=i;
++time;
std::swap(un[i],un[t]);
}
}
std::cout<<time<<std::endl;
for(int1 i=0;i<time;++i)
{
std::cout<<b[i][0]<<" "<<b[i][1]<<std::endl;
}
return 0;
}
'#4 '#5 '#6三个点显示是“结果非升序”
求大佬解惑