Submission #1302339

#TimeUsernameProblemLanguageResultExecution timeMemory
1302339txq2109Towers (NOI22_towers)C++20
11 / 100
2099 ms250056 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...