P14358 CSP-J 2025 座位
来源:洛谷题库

思路
题目比较简单,数据量不大,要求求出出排序后的a1所在的列和行
- 列:排序后的数组下标直接除n ,结果向上取整即可
- 行:根据求出的列数分奇偶,用下标%行数n即可知道a1在这一列排第几,奇数从第一行开始,偶尔列从第n行开始排
- 注意:特判一下下标%n==0的情况,奇数项是第n行,偶数项在第一行
代码
cpp
#include<bits/stdc++.h>
using namespace std;
int a[10001];
int main(){
int n,m;
int c,r;//分别是列 、行
cin>>n>>m;
for(int i=1;i<=n*m;i++){
cin>>a[i];
}
int k=a[1],t=0; //t排序后所在位置
sort(a+1,a+n*m+1,greater<int>());//降序排列
for(int i=1;i<=n*m;i++){
if(a[i]==k) t=i;
}
//计算列数
if(t%n==0) c = t/n; //是行的整数倍 直接输出
else c = t/n+1; //座位在下一行
//计算行数
cout<<c<<" ";
if(t%n==0){ //位置刚好在首尾的情况
if(c%2==1) cout<<n; //奇数列在最后一排
else cout<<1;
}else{
if(c%2==1) cout<<t%n;
else cout<<n-t%n+1;
}
return 0;
}