#include <bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define pu push
#define pb push_back
#define el cout<<"\n";
#define endl "\n"
#define M 1000006
#define ii pair<int,int>
using namespace std;
int dx[4]={1,0,-1,0},dy[4]={0,-1,0,1};
int n,m,ans=0,xmax=0,ymax=0,xmin=LLONG_MAX,ymin=LLONG_MAX;
bool solve=0;
vector<ii> a;
map<pair<int,int>,int> mp;
vector<vector<int>> yarray;
vector<int> ylist,mpy;
bool out(vector<int> x)
{
vector<int> none;
for(int i=1;i<=n;i++) {
if(!x[i]) {
vector<int> check(4,0);
for(int j=0;j<=3;j++) {
int xx=a[i].fi,yy=a[i].se;
while(xx<=xmax&&yy<=ymax&&xx>=xmin&&yy>=ymin) {
xx+=dx[j],yy+=dy[j];
if(x[mp[{xx,yy}]]) { check[j]=1; break; }
}
}
if(check[0]&&check[2]) continue;
if(check[1]&&check[3]) continue;
return false;
}
}
for(int i=1;i<=n;i++) cout<<x[i];
return true;
}
void backtrack(int i,int n,vector<int> x)
{
if(solve) return;
if(i>n) {
if(out(x)) solve=1;
return;
}
for(int j=0;j<=1;j++) {
x[i]=j;
backtrack(i+1,n,x);
}
}
void sub2()
{
vector<int> x(n+1);
backtrack(1,n,x);
return ;
}
void sub3()
{
vector<int> res(n+1,0);
for(auto y:ylist) {
if(yarray[y].size()<2) res[mp[{yarray[y][0],y}]]=1;
else {
int minn=LLONG_MAX,maxx=LLONG_MIN;
for(auto x:yarray[y]) minn=min(minn,x),maxx=max(maxx,x);
res[mp[{minn,y}]]=1;
res[mp[{maxx,y}]]=1;
}
}
for(int i=1;i<=n;i++) cout<<res[i];
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
#define FILE "SLAMP"
if(fopen(FILE".inp","r")) {
freopen(FILE".inp","r",stdin);
freopen(FILE".out","w",stdout);
}
cin>>n;
a.assign(n+1,{});
yarray.assign(M,vector<int> {});
mpy.assign(M,0);
for(int i=1;i<=n;i++) {
cin>>a[i].fi>>a[i].se;
xmax=max(xmax,a[i].fi);
ymax=max(ymax,a[i].se);
xmin=min(xmin,a[i].fi);
ymin=min(ymin,a[i].se);
mp[{a[i].fi,a[i].se}]=i;
yarray[a[i].se].pb(a[i].fi);
if(!mpy[a[i].se]) {
mpy[a[i].se]=1;
ylist.pb(a[i].se);
}
}
if(n<=16) sub2();
else sub3();
return 0;
}
//txq - ctq
Compilation message (stderr)
Main.cpp: In function 'int main()':
Main.cpp:86:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
86 | freopen(FILE".inp","r",stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
Main.cpp:87:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
87 | freopen(FILE".out","w",stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |