简单,绝对不会超时
2026-09-29 21:49:02
发布于:上海
9阅读
0回复
0点赞
思路:先输入n和m,然后再输入一个r,r是小R的分数,把数组a(我这里是b)的第一项设为r,再输入其余项,sort降序排序,在a数组里找到小R的分数,记录当前位置,分数所在列数就是当前分数下标除以n也就是行数,要注意的一点是,如果直接用int类型做除法可能列数会少一列,所以要向上取整,行数先用当前位置下标去取模2n,当行数取模结束后为零时,那行数就应该是1,如果行数大于了n,那么就要用n减去取模出来的结果减n减1,算式大概是n-(i-n-1),化简的话不知道为什么我的代码会出错,所以尽量不要去化简,最后输出就行,记住输出完一定要break!代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,m,b[105],r,wz;
int main(){
cin>>n>>m>>r;
b[1]=r;
for(int i=2;i<=n*m;i++){
cin>>b[i];
}
sort(b+1,b+n*m+1,greater<int>());
for(int i=1;i<=n*m;i++){
if(b[i]==r){
wz=i;
cout<<ceil(double(wz)/n)<<" ";
i%=(n*2);
if(i==0)i=1;
if(i>n){
i=n-(i-n-1);
}
cout<<i;
break;
}
}
return 0;
}
这里空空如也







有帮助,赞一个