座位 (CSP-J 2025)
第二题依然不难,把数字从大到小排序,然后在的方格中,将数字按列优先从左上角开始“蛇形”排列,然后找其中一个数字的位置。
下面的是一种办法,因为和都很小(小于10),所以直接排序后循环找到数字位置,然后计算列和行就可以。“蛇形”下的行坐标,可以通过计算奇数和偶数列来分别处理得到。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m;
int a[105];
int main() {
scanf("%d %d", &n, &m);
for (int i = 0; i < n*m; i++) {
scanf("%d", &a[i]);
}
int x = a[0];
sort(a, a + n*m, greater<int>());
int idx = -1;
for (int i = 0; i < n*m; i++) {
if (a[i] == x) {
idx = i;
break;
}
}
int col = idx / n;
int row = idx % n;
if (col % 2 == 1)
row = n - row - 1;
printf("%d %d\n", col+1, row+1);
return 0;
}