QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#354833#6563. Four Squarekevinshan#AC ✓2ms3856kbC++172.9kb2024-03-16 04:03:532024-03-16 04:03:55

Judging History

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

  • [2024-03-16 04:03:55]
  • 评测
  • 测评结果:AC
  • 用时:2ms
  • 内存:3856kb
  • [2024-03-16 04:03:53]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define ii pair<int,int>
#define i4 array<int, 4>
#define ff first
#define ss second
int x[4], y[4], a[4000][4000];

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    if (fopen("input.in", "r")) {
        freopen("input.in", "r", stdin);
        freopen("output.out", "w", stdout);
    }
    int cur = 0;
    for (int i=0; i<4; i++) cin>>x[i]>>y[i], cur += x[i] * y[i];
    int sq = sqrt(cur);
    if (sq * sq != cur) return cout<<0, 0;
    for (int i=0; i<16; i++)
    {
        vector<ii> v;
        for (int j=0; j<4; j++) if (i >> j & 1) v.push_back({y[j], x[j]}); else v.push_back({x[j], y[j]});
        sort(v.begin(), v.end());
        do
        {  
            bool f = 1;
            vector<i4> ve;
            for (auto [x, y]: v)
            {
                /* Find upmost line */
                int xx = -1, yy = -1;
                for (int i=0; i<=sq; i++)
                {
                    int curcol = 0;
                    vector<int> so;
                    for (auto rec: ve)
                    {
                        if (rec[0] <= i && rec[2] > i) 
                            so.push_back(rec[1]), so.push_back(rec[3]);
                    }
                    sort(so.begin(), so.end());
                    int allow = -1;
                    for (int j=0; j<so.size(); j+=2)
                    {
                        if (so[j] == curcol) curcol = so[j+1];
                        else
                        {
                            allow = so[j] - curcol;
                            break;
                        }
                    }
                    if (allow == -1) allow = sq - curcol;
                    if (allow > 0) 
                    {
                        xx = i;
                        yy = curcol;
                        if (allow < y) f = 0;
                        break;
                    }
                }
                // if (xx == -1) for (auto [x, y]: v) cout<<"HHHH: "<<x<<" "<<y<<"\n";
                assert(xx != -1);
                // cout<<"HEH: "<<xx<<" "<<yy<<"\n";
                if (!f) break;
                if (xx + x > sq || yy + y > sq)
                {
                    f = 0;
                    break;
                }
                ve.push_back({xx, yy, xx+x, yy+y});
                sort(ve.begin(), ve.end());
                // for (auto x: ve) cout<<"BRUH: "<<x[0]<<" "<<x[1]<<" "<<x[2]<<" "<<x[3]<<"\n";
            }
            if (f) 
            {
                // for (auto [x, y]: v) cout<<"HUH: "<<x<<" "<<y<<"\n";
                // for (auto x: ve) cout<<"BRUH: "<<x[0]<<" "<<x[1]<<" "<<x[2]<<" "<<x[3]<<"\n";
                return cout<<1, 0;
            }
            // break;
        } while (next_permutation(v.begin(), v.end()));
        
    }
    cout<<0;
}


詳細信息

Test #1:

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

input:

1 1
1 1
1 1
1 1

output:

1

result:

ok single line: '1'

Test #2:

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

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: 3608kb

input:

5 3
5 5
3 3
3 5

output:

1

result:

ok single line: '1'

Test #5:

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

input:

1 2
4 8
16 32
64 128

output:

0

result:

ok single line: '0'

Test #6:

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

input:

4 4
2 1
4 4
2 1

output:

0

result:

ok single line: '0'

Test #7:

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

input:

995 51
559 565
154 536
56 780

output:

0

result:

ok single line: '0'

Test #8:

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

input:

391 694
540 42
240 937
691 246

output:

0

result:

ok single line: '0'

Test #9:

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

input:

519 411
782 710
299 45
21 397

output:

0

result:

ok single line: '0'

Test #10:

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

input:

96 960
948 18
108 82
371 576

output:

0

result:

ok single line: '0'

Test #11:

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

input:

3 2
4 3
3 1
1 4

output:

0

result:

ok single line: '0'

Test #12:

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

input:

4 3
1 2
4 4
3 2

output:

0

result:

ok single line: '0'

Test #13:

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

input:

4 4
1 3
5 4
2 5

output:

0

result:

ok single line: '0'

Test #14:

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

input:

1000 1000
1000 1000
1000 1000
1000 1000

output:

1

result:

ok single line: '1'

Test #15:

score: 0
Accepted
time: 2ms
memory: 3628kb

input:

1000 999
998 1000
997 1000
997 997

output:

1

result:

ok single line: '1'

Test #16:

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

input:

1 3
3 3
3 3
4 7

output:

1

result:

ok single line: '1'

Test #17:

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

input:

2 5
5 4
7 1
6 2

output:

1

result:

ok single line: '1'

Test #18:

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

input:

12 2
12 7
7 12
16 4

output:

1

result:

ok single line: '1'

Test #19:

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

input:

7 2
2 14
5 14
7 12

output:

1

result:

ok single line: '1'

Test #20:

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

input:

32 36
5 1
1 37
35 5

output:

1

result:

ok single line: '1'

Test #21:

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

input:

28 30
30 1
31 1
2 30

output:

1

result:

ok single line: '1'

Test #22:

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

input:

66 68
9 11
7 66
9 64

output:

1

result:

ok single line: '1'

Test #23:

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

input:

59 44
25 44
40 32
40 52

output:

1

result:

ok single line: '1'

Test #24:

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

input:

4 4
2 3
4 2
3 2

output:

1

result:

ok single line: '1'