Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#pragma comment(linker, "/stack:200000000")
- #pragma GCC optimize("O3", "Ofast", "fast-math")
- #include <iostream>
- using namespace std;
- using ll = long long;
- using ld = long double;
- using ull = unsigned long long;
- #define all(v) v.begin(), v.end()
- #define rall(v) v.rbegin(), v.rend()
- #define F first
- #define S second
- // #define int ll
- // #define double long double
- // #define size_t int
- int a[2048][2000];
- size_t n, m;
- size_t q;
- signed main() {
- cin.tie(0);
- cout.tie(0);
- ios_base::sync_with_stdio(0);
- cin >> n >> m;
- for (size_t i = 0; i < n; ++i) {
- for (size_t j = 0; j < m; ++j) {
- a[i][j] = i * m + j;
- }
- }
- cin >> q;
- while (q--) {
- char c;
- size_t l, r, x, y;
- cin >> c >> l >> x >> r >> y;
- --l, --x, --r, --y;
- size_t cc;
- if (c == 'H') {
- for (size_t i = l; i <= r; ++i) {
- size_t rr = (max<size_t>(x + y, 1) - 1) / 2;
- for (size_t j = x; j <= rr; ++j) {
- cc = y + x - j;
- a[i][j] ^= a[i][cc];
- a[i][cc] ^= a[i][j];
- a[i][j] ^= a[i][cc];
- }
- }
- } else {
- size_t rr = (l + r - 1) / 2;
- for (size_t i = l; i <= rr; ++i) {
- for (size_t j = x; j <= y; ++j) {
- cc = r + l - i;
- a[i][j] ^= a[cc][j];
- a[cc][j] ^= a[i][j];
- a[i][j] ^= a[cc][j];
- }
- }
- }
- }
- for (size_t i = 0; i < n; ++i) {
- long long s = 0;
- for (size_t j = 0; j < m; ++j) {
- s += a[i][j];
- }
- cout << s << ' ';
- }
- cout << '\n';
- long long d[m] = {};
- for (size_t i = 0; i < n; ++i) {
- for (size_t j = 0; j < m; ++j) {
- d[j] += a[i][j];
- }
- }
- for (size_t i = 0; i < m; ++i) {
- cout << d[i] << ' ';
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment