30分求助
查看原帖
30分求助
1163927
F1NE楼主2023/12/26 19:56
#include<bits/stdc++.h>
using namespace std;
struct swp{
	int befo,aftr;
}stor[101003000];
int op=0;
double a[10005][10005],b[10005],c[10005];
int sn=0;
void cal(int n,double m){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%lf",&a[i][j]);
			a[i][0]+=a[i][j];
		}//cout<<a[i][0]<<endl;
		for(int j=m;j>=2;j--){
			a[i][j]-=a[i][j-1];//cout<<a[i][j]<<endl;
		}
		a[i][1]-=a[i][0]/m;
		a[i][0]=0;
		for(int j=0,k=0;j<=m;j++){
			a[i][j]+=k;
			k=a[i][j];
			a[i][0]+=k*k;
		}
		b[i]+=a[i][0]/m;
		a[i][0]=0;
	}
}
void mp(int n){
	for(int i=n;i>0;i--){
		for(int j=0;j<i-1;j++){
			if(c[j]>c[j+1]){
				stor[op].befo=j+1;
				stor[op].aftr=j+2;
				op++;
				swap(c[j],c[j+1]);
			}
		}
	}
}

int main(){
	int n;double m;
	cin>>n>>m;
	cal(n,m);cal(n,m);
	for(int i=0;i<n;i++) c[i]=b[i+1];
	//for(int i=0;i<n;i++) cout<<c[i]<<' ';cout<<endl;
	mp(n);
	//for(int i=1;i<=n;i++) cout<<b[i]<<' ';cout<<endl;
	//for(int i=0;i<n;i++) cout<<c[i]<<' ';cout<<endl;
	cout<<op<<endl;
	for(int i=0;i<op;i++){
		cout<<stor[i].befo<<' '<<stor[i].aftr<<endl; 
	}
	return 0;
}
2023/12/26 19:56
加载中...