QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#359404#6563. Four SquareLaStataleBlue#AC ✓0ms3740kbC++232.9kb2024-03-20 17:35:412024-03-20 17:35:41

Judging History

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

  • [2024-03-20 17:35:41]
  • 评测
  • 测评结果:AC
  • 用时:0ms
  • 内存:3740kb
  • [2024-03-20 17:35:41]
  • 提交

answer

#pragma ide diagnostic ignored "misc-no-recursion"

#include "bits/stdc++.h"

using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int, int> pii;

#define TESTCASE 0

static constexpr int MAXN = 1e6 + 5;

bool check2(int h, int w, array<pii, 2> rects) {
    const auto ch = [&rects](int h, int w) -> bool {
        auto [r, s] = rects;
        if (r.second == h)
            swap(r.first, r.second);
        if (s.second == h)
            swap(s.first, s.second);
        return (r.first == h && s.first == h && r.second + s.second == w);
    };
    return ch(h, w) || ch(w, h);
}

bool check3(int h, int w, array<pii, 3> rects) {
    array<pii, 2> tmp2;
    bool ans = false;
    for (int i = 0; i < 3; ++i) {
        auto [a, b] = rects[i];
        for (int j = 0; j < 3; j++)
            if (i != j)
                tmp2[j - (j > i)] = rects[j];
        ans |= (a == h && check2(h, w - b, tmp2));
        ans |= (a == w && check2(w, h - b, tmp2));
        swap(a, b);
        ans |= (a == h && check2(h, w - b, tmp2));
        ans |= (a == w && check2(w, h - b, tmp2));
        if (ans)
            return true;
    }
    return false;
}

static void solve([[maybe_unused]] int tc) {
    array<pii, 4> panes;
    int area = 0;
    for (int i = 0, a, b; i < 4; i++) {
        cin >> a >> b;
        if (a > b)
            swap(a, b);
        panes[i] = {a, b};
        area += a * b;
    }
    int side = sqrt(area);
    if (side * side != area) {
        cout << "0\n";
        return;
    }
    for (int i = 0; i < 4; ++i)
        if (panes[i].second > side) {
            cout << "0\n";
            return;
        }

    array<pii, 3> tmp3;
    for (int i = 0; i < 4; i++) {
        const auto [a, b] = panes[i];
        for (int j = 0; j < 4; j++)
            if (i != j)
                tmp3[j - (j > i)] = panes[j];
        if (b == side && check3(side - a, side, tmp3)) {
            cout << "1\n";
            return;
        }
    }

    array<pii, 2> tmp2;
    for (int i = 0; i < 4; ++i) {
        for (int j = i + 1; j < 4; ++j) {
            for (int k = 0; k < 4; ++k)
                if (k != j && k != i)
                    tmp2[k - (k > i) - (k > j)] = panes[k];
            const pii p = panes[i], q = panes[j];
            bool pq = check2(p.first, side, {p, q}) && check2(side - p.first, side, tmp2);
            bool qp = check2(p.second, side, {p, q}) && check2(side - p.second, side, tmp2);
            if (pq || qp) {
                cout << "1\n";
                return;
            }
        }
    }

    cout << "0\n";
}

int main() {
    ios::sync_with_stdio(false);

    if (const char *f = getenv("REDIRECT_STDOUT"); f) {
        freopen(f, "w", stdout);
    }

    int T = 1;
#if TESTCASE
    cin >> T;
#endif

    for (int t = 1; t <= T; t++) {
        solve(t);
    }

    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3660kb

input:

1 1
1 1
1 1
1 1

output:

1

result:

ok single line: '1'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3612kb

input:

3 1
3 3
2 2
3 3

output:

0

result:

ok single line: '0'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

2 8
2 8
2 8
2 8

output:

1

result:

ok single line: '1'

Test #4:

score: 0
Accepted
time: 0ms
memory: 3692kb

input:

5 3
5 5
3 3
3 5

output:

1

result:

ok single line: '1'

Test #5:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

1 2
4 8
16 32
64 128

output:

0

result:

ok single line: '0'

Test #6:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

4 4
2 1
4 4
2 1

output:

0

result:

ok single line: '0'

Test #7:

score: 0
Accepted
time: 0ms
memory: 3668kb

input:

995 51
559 565
154 536
56 780

output:

0

result:

ok single line: '0'

Test #8:

score: 0
Accepted
time: 0ms
memory: 3688kb

input:

391 694
540 42
240 937
691 246

output:

0

result:

ok single line: '0'

Test #9:

score: 0
Accepted
time: 0ms
memory: 3696kb

input:

519 411
782 710
299 45
21 397

output:

0

result:

ok single line: '0'

Test #10:

score: 0
Accepted
time: 0ms
memory: 3740kb

input:

96 960
948 18
108 82
371 576

output:

0

result:

ok single line: '0'

Test #11:

score: 0
Accepted
time: 0ms
memory: 3672kb

input:

3 2
4 3
3 1
1 4

output:

0

result:

ok single line: '0'

Test #12:

score: 0
Accepted
time: 0ms
memory: 3688kb

input:

4 3
1 2
4 4
3 2

output:

0

result:

ok single line: '0'

Test #13:

score: 0
Accepted
time: 0ms
memory: 3688kb

input:

4 4
1 3
5 4
2 5

output:

0

result:

ok single line: '0'

Test #14:

score: 0
Accepted
time: 0ms
memory: 3684kb

input:

1000 1000
1000 1000
1000 1000
1000 1000

output:

1

result:

ok single line: '1'

Test #15:

score: 0
Accepted
time: 0ms
memory: 3668kb

input:

1000 999
998 1000
997 1000
997 997

output:

1

result:

ok single line: '1'

Test #16:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

1 3
3 3
3 3
4 7

output:

1

result:

ok single line: '1'

Test #17:

score: 0
Accepted
time: 0ms
memory: 3672kb

input:

2 5
5 4
7 1
6 2

output:

1

result:

ok single line: '1'

Test #18:

score: 0
Accepted
time: 0ms
memory: 3688kb

input:

12 2
12 7
7 12
16 4

output:

1

result:

ok single line: '1'

Test #19:

score: 0
Accepted
time: 0ms
memory: 3672kb

input:

7 2
2 14
5 14
7 12

output:

1

result:

ok single line: '1'

Test #20:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

32 36
5 1
1 37
35 5

output:

1

result:

ok single line: '1'

Test #21:

score: 0
Accepted
time: 0ms
memory: 3612kb

input:

28 30
30 1
31 1
2 30

output:

1

result:

ok single line: '1'

Test #22:

score: 0
Accepted
time: 0ms
memory: 3668kb

input:

66 68
9 11
7 66
9 64

output:

1

result:

ok single line: '1'

Test #23:

score: 0
Accepted
time: 0ms
memory: 3612kb

input:

59 44
25 44
40 32
40 52

output:

1

result:

ok single line: '1'

Test #24:

score: 0
Accepted
time: 0ms
memory: 3664kb

input:

4 4
2 3
4 2
3 2

output:

1

result:

ok single line: '1'