#include <cstdio>
int n,i,j,flag=1,ans1, ans2, pos,a[1010], b[1010];
int main() {
scanf("%d",&n);
for(i=1; i<=n;i++) scanf("%d",&a[i]);
for(i=1; i<=n;i++) scanf("%d",&b[i]);
for(i=1; i<n; i++) if(a[i]>a[i+1]) flag=0;
for(i=1; i<n; i++) if(b[i]>b[i+1]) flag=0;
if(!flag) {
puts("invalid data");
return 0;
}
ans1=0;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(a[i]>b[j])ans1++;
printf("%d\n", ans1);
ans2=0;
pos=0;
for(int i=1; i<=n; i++) {
while(pos<n&&b[pos+1]<a[i]) pos++;
ans2+=pos;
}
printf("%d\n", ans2);
return 0;
}
判断题
1) 如果输入的n是不超过1000的正整数,输入的a[i]、b[i]是不超过1000000000的正整数(下同),那么输出的ans1与ans2一定相等。()
2) 如果将第16行的“a[i]>b[j]”改为“a[i]<b[j]”,将第2行的“ans2+=pos”改为“ans2+=n-pos”输出的ans1 与ans2一定相等( )
选择题
3) 当输入的n是5,输入的a[i]分别为2、5、5、7、10,输入的b[i]分别为3、4、5、8、10时,输出的ans2为 ( )。
4) 第20到第23行的时间复杂度为( )。
5) 若输入的n确定,则输出的 ans2 可能的最大值为( )。