/*# pragma GCC target("avx2")
# pragma GCC optimize("O3")
# pragma GCC optimize("unroll-loops")*/
#include<bits/stdc++.h>
using ll = long long;
using namespace std;
const ll mod = 998244353;
const ll INF = 1LL << 60;
const int MAX = 1e9 + 10;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define rep1(i, n) for (int i = 1; i <= (int)(n); i++)
#define rep2(i, l, r) for (int i = (l); i < (int)(r); i++)
#define repd(i, n) for (int i = (int)(n) - 1; i >= 0; i--)
#define repd1(i, n) for (int i = (int)(n); i >= 1; i--)
#define repd2(i, l, r) for (int i = (int)(r) - 1; i >= (int)(l); i--)
template<class T> bool chmin(T &a, T b) {
if (a > b) {
a = b; return 1;
}
return 0;
}
template<class T> bool chmax(T &a, T b) {
if (a < b) {
a = b; return 1;
}
return 0;
}
struct edge {
int to, w;
};
ll inv(ll a) {
ll b = mod, u = 1, v = 0;
while(b) {
ll t = a / b;
a -= b * t;
swap(a, b);
u -= v * t;
swap(u, v);
}
u %= mod;
if (u < 0) u += mod;
return u;
}
template<class T> void print(vector<T> a) {
int n = a.size();
for (int i = 0; i < n; i++) cout << a[i] << " ";
cout << endl;
}
template<class T> int low_idx(const vector<T> &a, T x) {
return distance(a.begin(), lower_bound(a.begin(), a.end(), x));
}
template<class T> bool next_combination(T &bit, int N) {
T x = bit & -bit, y = bit + x;
bit = (((bit & ~y) / x) >> 1) | y;
return (bit < (1LL << N));
}
int next_combination(int sub) {
int x = sub & -sub, y = sub + x;
return (((sub & ~y) / x) >> 1) | y;
}
int main() {
ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int R, C, Q; cin >> R >> C >> Q;
while (Q--) {
char ch; int x, y; cin >> ch >> x >> y;
if (x > y) swap(x, y);
if (ch == 'P') {
if (x == y) cout << R - 1 << " " << 1 << endl;
else cout << "0 0\n";
continue;
}
if (ch == 'R') {
if (x == y) cout << "1 1\n";
else cout << "2 2\n";
continue;
}
if (ch == 'Q') {
if (x == y) cout << "1 1\n";
else if (x + R - 1 == y || y + R - 1 == x) cout << "1 1\n";
else {
int res = 4;
if (R == C && x == 1 && y == C) res--;
if ((R + y - x - 1) % 2 == 0) {
int a = ((1+x)+(R-y))/2, b = ((1+x)-(R-y))/2;
if (1 < a && a < R && 1 <= b && b <= C) res++;
a = ((1-x)+(R+y))/2, b = ((R+y)-(1-x))/2;
if (1 < a && a < R && 1 <= b && b <= C) res++;
}
if (R == C && x == 1 || y == C) res++;
cout << "2 " << res << endl;
}
continue;
}
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |