不是VIP会员,不能显示答案

题目解答

题目:
#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 可能的最大值为( )。
考点:
分析:
解答:
评论:
老师: