QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#124706 | #6563. Four Square | Sommohito# | AC ✓ | 1ms | 3516kb | C++20 | 3.6kb | 2023-07-15 14:12:58 | 2023-07-15 14:12:59 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#ifdef APURBA
#include "DEBUG_TEMPLATE.h"
#else
#define HERE
#define debug(args...)
#endif
#define ALL(x) x.begin(),x.end()
vector<pair<int,int>>v(4);
int sq,sum;
#define point pair<int,int>
bool ok(pair<point,point> box)
{
bool f=1;
f&=(box.first.first>=1);
f&=(box.first.second>=1);
f&=(box.second.first<=sq);
f&=(box.second.second<=sq);
return f;
}
bool noConflict(pair<point,point> here,vector<pair<point,point>> all)
{
// debug(here,all);
for(auto rec:all)
{
int low_x=max(here.first.first,rec.first.first);
int high_x=min(here.second.first,rec.second.first);
int low_y=max(here.first.second,rec.first.second);
int high_y=min(here.second.second,rec.second.second);
if((low_x<=high_x&&low_y<=high_y))
{
return false;
}
}
// debug("here");
return true;
}
void build(vector<point>points,int mask,vector<pair<point,point>> all)
{
if(mask==15)
{
cout<<1<<endl;
// debug(all);
exit(0);
}
for(auto p:points)
{
for(int i=0;i<4;i++)
{
if(mask&(1<<i)) continue;
{
auto _all=all;
auto _points=points;
auto _mask=mask;
int A=v[i].first,B=v[i].second;
pair<point,point> here;
here.first=p;
here.second.first=here.first.first+A-1;
here.second.second=here.first.second+B-1;
if(noConflict(here,all)&&ok(here))
{
all.push_back(here);
mask|=(1<<i);
points.push_back({here.first.first,here.second.second+1});
points.push_back({here.second.first+1,here.first.second});
build(points,mask,all);
}
all=_all;
points=_points;
mask=_mask;
}
{
auto _all=all;
auto _points=points;
auto _mask=mask;
int A=v[i].second,B=v[i].first;
pair<point,point> here;
here.first=p;
here.second.first=here.first.first+A-1;
here.second.second=here.first.second+B-1;
if(noConflict(here,all)&&ok(here))
{
all.push_back(here);
mask|=(1<<i);
points.push_back({here.first.first,here.second.second+1});
points.push_back({here.second.first+1,here.first.second});
build(points,mask,all);
}
all=_all;
points=_points;
mask=_mask;
}
}
}
}
void TEST_CASES()
{
for(int i=0;i<4;i++)
{
cin>>v[i].first>>v[i].second;
sum+=v[i].first*v[i].second;
}
sq=sqrtl(sum);
if(sq*sq!=sum)
{
cout<<0<<"\n";
return;
}
vector<pair<int,int>>points;
points.push_back({1,1});
vector<pair<point,point>> all;
debug(sq);
build(points,0,all);
cout<<0;
}
/*
*/
int32_t main()
{
#ifndef APURBA
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
#endif
//freopen("input.txt","r",stdin);
//freopen("out1.txt","w",stdout);
int t=1;
//cin>>t;
while(t--)
{
TEST_CASES();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3416kb
input:
1 1 1 1 1 1 1 1
output:
1
result:
ok single line: '1'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3448kb
input:
3 1 3 3 2 2 3 3
output:
0
result:
ok single line: '0'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3416kb
input:
2 8 2 8 2 8 2 8
output:
1
result:
ok single line: '1'
Test #4:
score: 0
Accepted
time: 1ms
memory: 3480kb
input:
5 3 5 5 3 3 3 5
output:
1
result:
ok single line: '1'
Test #5:
score: 0
Accepted
time: 1ms
memory: 3472kb
input:
1 2 4 8 16 32 64 128
output:
0
result:
ok single line: '0'
Test #6:
score: 0
Accepted
time: 1ms
memory: 3452kb
input:
4 4 2 1 4 4 2 1
output:
0
result:
ok single line: '0'
Test #7:
score: 0
Accepted
time: 1ms
memory: 3408kb
input:
995 51 559 565 154 536 56 780
output:
0
result:
ok single line: '0'
Test #8:
score: 0
Accepted
time: 1ms
memory: 3408kb
input:
391 694 540 42 240 937 691 246
output:
0
result:
ok single line: '0'
Test #9:
score: 0
Accepted
time: 1ms
memory: 3416kb
input:
519 411 782 710 299 45 21 397
output:
0
result:
ok single line: '0'
Test #10:
score: 0
Accepted
time: 1ms
memory: 3500kb
input:
96 960 948 18 108 82 371 576
output:
0
result:
ok single line: '0'
Test #11:
score: 0
Accepted
time: 1ms
memory: 3408kb
input:
3 2 4 3 3 1 1 4
output:
0
result:
ok single line: '0'
Test #12:
score: 0
Accepted
time: 0ms
memory: 3516kb
input:
4 3 1 2 4 4 3 2
output:
0
result:
ok single line: '0'
Test #13:
score: 0
Accepted
time: 1ms
memory: 3452kb
input:
4 4 1 3 5 4 2 5
output:
0
result:
ok single line: '0'
Test #14:
score: 0
Accepted
time: 1ms
memory: 3420kb
input:
1000 1000 1000 1000 1000 1000 1000 1000
output:
1
result:
ok single line: '1'
Test #15:
score: 0
Accepted
time: 1ms
memory: 3472kb
input:
1000 999 998 1000 997 1000 997 997
output:
1
result:
ok single line: '1'
Test #16:
score: 0
Accepted
time: 1ms
memory: 3480kb
input:
1 3 3 3 3 3 4 7
output:
1
result:
ok single line: '1'
Test #17:
score: 0
Accepted
time: 1ms
memory: 3416kb
input:
2 5 5 4 7 1 6 2
output:
1
result:
ok single line: '1'
Test #18:
score: 0
Accepted
time: 1ms
memory: 3480kb
input:
12 2 12 7 7 12 16 4
output:
1
result:
ok single line: '1'
Test #19:
score: 0
Accepted
time: 1ms
memory: 3512kb
input:
7 2 2 14 5 14 7 12
output:
1
result:
ok single line: '1'
Test #20:
score: 0
Accepted
time: 1ms
memory: 3476kb
input:
32 36 5 1 1 37 35 5
output:
1
result:
ok single line: '1'
Test #21:
score: 0
Accepted
time: 1ms
memory: 3472kb
input:
28 30 30 1 31 1 2 30
output:
1
result:
ok single line: '1'
Test #22:
score: 0
Accepted
time: 0ms
memory: 3416kb
input:
66 68 9 11 7 66 9 64
output:
1
result:
ok single line: '1'
Test #23:
score: 0
Accepted
time: 0ms
memory: 3404kb
input:
59 44 25 44 40 32 40 52
output:
1
result:
ok single line: '1'
Test #24:
score: 0
Accepted
time: 0ms
memory: 3344kb
input:
4 4 2 3 4 2 3 2
output:
1
result:
ok single line: '1'