2 条题解
-
1
想到要放在前面,也想到,和他之前的第一个大于他的数交换位置,但是我多想了想着交换情况是不是和那个数后面的大小也有关,也没有同时计数的思想,就想着直接输出结果,直接通向正确答案。受教了。
#include<stdio.h> int main(){ int n; scanf("%d",&n); while(n--) { int a,b; scanf("%d%d",&a,&b); int arr[a+9]={0}; for(int i=1;i<=a;i++) { scanf("%d",&arr[i]); } int y=1; for(int i=1;i<b;i++) { if(arr[i]>arr[b]) { y=i; break; } } int q1=0,q2=0; int w=arr[b]; arr[b]=arr[1]; arr[1]=w; int max=-111; for(int i=1;i<=a;i++) { if(arr[i]>max) { max=arr[i]; } if(arr[1]==max) { q1++; } } q1--; arr[1]=arr[b]; arr[b]=w; int e=arr[b]; arr[b]=arr[y]; arr[y]=e; max=-1111; for(int i=1;i<=a;i++) { if(arr[i]>max) { max=arr[i]; } if(arr[y]max) { q2++; } } if(y1) { q2--; } if(q1>q2) { printf("%d\n",q1); } else { printf("%d\n",q2); }
} return 0; }
信息
- ID
- 1032
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 59
- 已通过
- 10
- 上传者