0tps
查看原帖
0tps
515971
Owenzjg楼主2023/4/6 23:18
#include <bits/stdc++.h>
using namespace std;
int main() {
    int q;
    cin >> q;
    while (q--) {
        int n, m1, m2, r, a;
        cin >> n >> m1 >> m2 >> r >> a;
        int x = 0, y = 0;
        // 行和列
        if (m1 == 1) {     // 连续队形
            if (m2 == 1) { // 按行排列
                x = ceil(a * 1.0 / r);
                y = a - (x - 1) * r;
            } else { // 按列排列
                x = ceil(a * 1.0 / r);
                y = a - (x - 1) * r;
                swap(x, y);
            }
        } else { // 梅花桩队形
            int maxx = r / 2 + 1;
            int minn = r / 2;
            if (m2 == 1) { // 按行排列
                x = a / (maxx + minn);
                int temp = a - x * (maxx + minn);
                x *= 2;
                if (temp == 0) {
                    y = r - 1;
                } else if (temp >= maxx) {
                    temp -= maxx;
                    x += 1;
                    if (temp == 0) {
                        y = r;
                    } else {
                        y = temp * 2;
                        x++;
                    }
                } else {
                    x++;
                    y = (temp - 1) * 2 + 1;
                }
            } else { // 按列排列
                x = a / (maxx + minn);
                int temp = a - x * (maxx + minn);
                x *= 2;
                if (temp == 0) {
                    y = r - 1;
                } else if (temp >= maxx) {
                    temp -= maxx;
                    x += 1;
                    if (temp == 0) {
                        y = r;
                    } else {
                        y = temp * 2;
                        x++;
                    }
                } else {
                    x++;
                    y = (temp - 1) * 2 + 1;
                }
                swap(x, y);
            }
        }
        cout << x << " " << y << " ";
    }
    return 0;
}

2023/4/6 23:18
加载中...