题面是这样的:有n个从小到大依次排列的数列,每个数列有m个数,问插入多少个数可以使这个数列成为一个等差数列,如果不行输出-1.
以下为代码:
#include<iostream>
using namespace std;
int main(){
int n,m[10000],a[10000],y[10000],ans[10000],ansf;
cin>>n;
int x[100][100];
for(int i=1;i<=n;i++){
cin>>m[i];
for(int j=m[i];j<=m[i];j++){
cin>>a[j];
}
}
for(int i=1;i<=n;i++){
for(int j=m[i];j<=m[i];j++){
x[i][j]=m[i+1]-m[i];
}
}
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
for(int l=1;l<=n;l++){
if(x[i][j]/l==0&&x[i][j+1]/l==0&&x[i][j+2]/l==0){y[i]=l;}
}
}
for(int i=1;i<=n;i++){
for(int j=m[i];j<=m[i];j++){
if(x[i][j]==x[i][j+1]){
cout<<"-1"<<endl;
}
else{
for(int l=1;l<=n;l++){
ans[l]=((m[l+1]-m[l])/y[l])-1;
}
for(int l=1;l<=n;l++){
ansf=ans[l]+ansf;
}
cout<<ansf<<endl;
}
}
}
}
return 0;
}