QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#248935#7178. BishopsEWDEHSAMSWATERMELON#WA 0ms3640kbC++204.5kb2023-11-11 22:53:452023-11-11 22:53:45

Judging History

你现在查看的是最新测评结果

  • [2023-11-11 22:53:45]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3640kb
  • [2023-11-11 22:53:45]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;
//#define int long long
using pii = pair <int, int>;
#define ff first
#define ss second
#define sz(x) ((int) (x).size())
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

template <typename T1, typename T2>
void mxr(T1& a, const T2& b) {
    if (b > a) {
        a = b;
    }
}

template <typename T1, typename T2>
void mnr(T1& a, const T2& b) {
    if (b < a) {
        a = b;
    }
}

const int K = 330;

signed main() {
    ios_base::sync_with_stdio(false);
#ifdef BUY
    freopen("inputik.txt", "r", stdin);
    freopen("outputik.txt", "w", stdout);
#else
    cin.tie(nullptr);
#endif
    auto solve = [](auto& solve, int n, int m) -> int {
        if (n > m) {
            swap(n, m);
        }
        if (n == 1) {
            return m;
        }
        if (n == 0) {
            return 0;
        }
        if (n == m) {
            return 2 * n - 2;
        }
        if (n % 2 && m % n == 0) {
            return n + m - 1;
        }
        if (m % n == 0) {
            return (m / n) * n + n - 2;
        }
        int r = m % n;
        if (r + 1 == n) {
            return solve(solve, r + 1, n) + n * (m / n);
        }
        return solve(solve, n, m % n) + n * (m / n);
    };
    int n, m;
    cin >> n >> m;
    cout << solve(solve, n, m);
//    for (int n = 1; n < 100; ++n) {
//        for (int m = n; m < 100; ++m) {
//
//            // i + j
//            // i + (m - j - 1)
//            int diag1 = (n + m - 1);
//            int diag2 = (n + m - 1) * 2;
//            vector <vector <int> > g(n * m);
//            for (int i = 0; i < n; ++i) {
//                for (int j = 0; j < m; ++j) {
//                    g[i + j].push_back((i + (m - j - 1)));
//                }
//            }
//            int u = 1;
//            vector <int> used(diag1);
//            vector <int> mt(diag1, -1);
//            auto kuhn = [&](auto& kuhn, int cur) -> bool {
//                if (used[cur] == u) {
//                    return false;
//                }
//                used[cur] = u;
//                for (auto to : g[cur]) {
//                    if (mt[to] == -1) {
//                        mt[to] = cur;
//                        return true;
//                    }
//                }
//                for (auto to : g[cur]) {
//                    if (kuhn(kuhn, mt[to])) {
//                        mt[to] = cur;
//                        return true;
//                    }
//                }
//                return false;
//            };
//            for (int i = 0; i < diag1; ++i) {
//                kuhn(kuhn, i);
//                ++u;
//            }
//            int res1 = (diag1 - count(all(mt), -1));
//            vector <string> v(n, string(m, '.'));
//    for (int l = 0; l < diag1; ++l) {
//        if (mt[l] != -1) {
//            int r = mt[l];
//            //x + (m - y - 1) = l
//            //x + y = r
//            //2 * y - m + 1 = r - l
//            int j = (r - l - 1 + m) / 2;
//            int i = r - j;
//            v[i][j] = '#';
//        }
//    }
////    for (auto i : v) {
////        cout << i << "\n";
////    }
//            auto solve = [&](auto& solve, int n, int m) -> int {
//                if (n > m) {
//                    swap(n, m);
//                }
//                if (n == 1) {
//                    return m;
//                }
//                if (n == 0) {
//                    return 0;
//                }
//                if (n == m) {
//                    return 2 * n - 2;
//                }
//                if (n % 2 && m % n == 0) {
//                    return n + m - 1;
//                }
//                if (m % n == 0) {
//                    return (m / n) * n + n - 2;
//                }
//                int r = m % n;
//                if (r + 1 == n) {
//                    return solve(solve, r + 1, n) + n * (m / n);
//                }
//                return solve(solve, n, m % n) + n * (m / n);
//            };
//            int res2 = solve(solve, n, m);
//            if (res1 != res2) {
//                cout << res1 << " ";
//                cout << res2 << "\n";
//                cout << "PIZDA\n";
//                cout << n << " " << m << "\n";
//                for (auto i : v) {
//                    cout << i << "\n";
//                }
//                cout << "\n\n";
//                cout << endl;
//            }
//        }
//    }
}

详细

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3640kb

input:

2 5

output:

6

result:

wrong output format Unexpected end of file - int32 expected