QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#116542#6563. Four SquareNYCU_Yamada#AC ✓1ms3500kbC++143.5kb2023-06-29 14:46:192023-06-29 14:46:21

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-06-29 14:46:21]
  • 评测
  • 测评结果:AC
  • 用时:1ms
  • 内存:3500kb
  • [2023-06-29 14:46:19]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define int int64_t

int h[4], w[4];



void solve() {
    int area = 0;
    for(int i = 0; i < 4; ++i) {
        cin >> h[i] >> w[i];
        area += h[i] * w[i];
    }
    int sq = sqrt(area);
    if(sq * sq == area) {
        for(int i = 0; i < (1 << 4); ++i) {
            for(int j = 0; j < 4; ++j) {
                if((i >> j) & 1) {
                    swap(h[j], w[j]);
                }
            }

            for(int S = 0; S < (1 << 4); ++S) {
                int c = __builtin_popcount(S);
                if(c == 4) {
                    bool flag = true;
                    for(int k = 0; k < 4; ++k) {
                        if(h[k] != sq) {
                            flag = false; break;
                        }
                    }
                    if(flag) {
                        cout << "1\n"; return;
                    }
                }
                else if(c == 3) {
                    vector<int> in, out;
                    for(int k = 0; k < 4; ++k) { 
                        if((S >> k) & 1) {
                            in.emplace_back(k);
                        }
                        else {
                            out.emplace_back(k);
                        }
                    }
                    int w_sum_i = 0;
                    for(int x : in) w_sum_i += w[x];
                    if(w_sum_i != sq) continue;
                    set<int> h_i;
                    for(int x : in) h_i.insert(h[x]);
                    if(h_i.size() == 1) {
                        if(w[out[0]] == sq) {
                            cout << "1\n"; return;
                        }
                    }
                    else if(h_i.size() == 2) {
                        int d = *h_i.rbegin() - *h_i.begin();
                        if(h[out[0]] != d) continue;
                        int h_min_i = *h_i.begin();
                        int h_min_sum_i = 0;
                        for(int x : in) if(h[x] == h_min_i) h_min_sum_i += w[x];
                        if(w[out[0]] != h_min_sum_i) continue;
                        cout << "1\n"; return;
                    }    
                }
                else if(c == 2) {
                    vector<int> in, out;
                    for(int k = 0; k < 4; ++k) { 
                        if((S >> k) & 1) {
                            in.emplace_back(k);
                        }
                        else {
                            out.emplace_back(k);
                        }
                    }
                    int w_sum_i = 0;
                    for(int x : in) w_sum_i += w[x];
                    if(w_sum_i != sq) continue;
                    int w_sum_o = 0;
                    for(int x : out) w_sum_o += w[x];
                    if(w_sum_o != sq) continue;
                    set<int> h_i, h_o;
                    for(int x : in) h_i.insert(h[x]);
                    for(int x : out) h_o.insert(h[x]);
                    if(h_i.size() != 1 || h_o.size() != 1) continue;
                    cout << "1\n"; return;
                }
            }
            for(int j = 0; j < 4; ++j) {
                if((i >> j) & 1) {
                    swap(h[j], w[j]);
                }
            }
        }
    }
    cout << "0\n";
}

int32_t main() {
    ios_base::sync_with_stdio(0), cin.tie(0);
    
    solve();
    
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3420kb

input:

1 1
1 1
1 1
1 1

output:

1

result:

ok single line: '1'

Test #2:

score: 0
Accepted
time: 1ms
memory: 3464kb

input:

3 1
3 3
2 2
3 3

output:

0

result:

ok single line: '0'

Test #3:

score: 0
Accepted
time: 1ms
memory: 3432kb

input:

2 8
2 8
2 8
2 8

output:

1

result:

ok single line: '1'

Test #4:

score: 0
Accepted
time: 1ms
memory: 3396kb

input:

5 3
5 5
3 3
3 5

output:

1

result:

ok single line: '1'

Test #5:

score: 0
Accepted
time: 1ms
memory: 3464kb

input:

1 2
4 8
16 32
64 128

output:

0

result:

ok single line: '0'

Test #6:

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

input:

4 4
2 1
4 4
2 1

output:

0

result:

ok single line: '0'

Test #7:

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

input:

995 51
559 565
154 536
56 780

output:

0

result:

ok single line: '0'

Test #8:

score: 0
Accepted
time: 1ms
memory: 3500kb

input:

391 694
540 42
240 937
691 246

output:

0

result:

ok single line: '0'

Test #9:

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

input:

519 411
782 710
299 45
21 397

output:

0

result:

ok single line: '0'

Test #10:

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

input:

96 960
948 18
108 82
371 576

output:

0

result:

ok single line: '0'

Test #11:

score: 0
Accepted
time: 1ms
memory: 3444kb

input:

3 2
4 3
3 1
1 4

output:

0

result:

ok single line: '0'

Test #12:

score: 0
Accepted
time: 1ms
memory: 3400kb

input:

4 3
1 2
4 4
3 2

output:

0

result:

ok single line: '0'

Test #13:

score: 0
Accepted
time: 1ms
memory: 3408kb

input:

4 4
1 3
5 4
2 5

output:

0

result:

ok single line: '0'

Test #14:

score: 0
Accepted
time: 1ms
memory: 3396kb

input:

1000 1000
1000 1000
1000 1000
1000 1000

output:

1

result:

ok single line: '1'

Test #15:

score: 0
Accepted
time: 1ms
memory: 3404kb

input:

1000 999
998 1000
997 1000
997 997

output:

1

result:

ok single line: '1'

Test #16:

score: 0
Accepted
time: 1ms
memory: 3424kb

input:

1 3
3 3
3 3
4 7

output:

1

result:

ok single line: '1'

Test #17:

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

input:

2 5
5 4
7 1
6 2

output:

1

result:

ok single line: '1'

Test #18:

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

input:

12 2
12 7
7 12
16 4

output:

1

result:

ok single line: '1'

Test #19:

score: 0
Accepted
time: 1ms
memory: 3400kb

input:

7 2
2 14
5 14
7 12

output:

1

result:

ok single line: '1'

Test #20:

score: 0
Accepted
time: 1ms
memory: 3420kb

input:

32 36
5 1
1 37
35 5

output:

1

result:

ok single line: '1'

Test #21:

score: 0
Accepted
time: 1ms
memory: 3420kb

input:

28 30
30 1
31 1
2 30

output:

1

result:

ok single line: '1'

Test #22:

score: 0
Accepted
time: 1ms
memory: 3388kb

input:

66 68
9 11
7 66
9 64

output:

1

result:

ok single line: '1'

Test #23:

score: 0
Accepted
time: 1ms
memory: 3468kb

input:

59 44
25 44
40 32
40 52

output:

1

result:

ok single line: '1'

Test #24:

score: 0
Accepted
time: 1ms
memory: 3428kb

input:

4 4
2 3
4 2
3 2

output:

1

result:

ok single line: '1'