Submission #377939

#TimeUsernameProblemLanguageResultExecution timeMemory
377939YJUPark (BOI16_park)C++14
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pll; typedef long double ld; const ll N=1e5+10; const ll MOD=1e9+7; const ld pi=3.14159265359; const ll INF=(1LL<<60); const ld eps=1e-14; #define REP(i,n) for(ll i=0;i<n;i++) #define REP1(i,n) for(ll i=1;i<=n;i++) #define X first #define Y second #define pb push_back #define mp make_pair #define setp setprecision #define lwb lower_bound #define SZ(a) (ll)a.size() #define SQ(_a) ((_a)*(_a)) ll sz[N],dir[N]; ll find(ll nd){ return (dir[nd]==nd?nd:dir[nd]=find(dir[nd])); } void Union(ll nda,ll ndb){ assert(nda<=n+4);assert(ndb<=n+4); assert(nda>=1);assert(ndb>=1); nda=find(nda);ndb=find(ndb); if(nda==ndb)return ; if(sz[nda]>sz[ndb])swap(nda,ndb); sz[ndb]+=sz[nda]; dir[nda]=ndb; } bool is(ll nda,ll ndb){ return (find(nda)==find(ndb)); } ll tx[N],ty[N],tr[N]; ll ans[N],qe[N],qr[N]; ll n,m,W,H; ll side[4][2]; ll ve[4],ho[4]; vector<pair<ld,pll> > query,event; ld dis(ll ida,ll idb){ return sqrt(SQ(tx[ida]-tx[idb])+SQ(ty[ida]-ty[idb])); } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>m; //prepare REP1(i,n+4)dir[i]=i,sz[i]=1; side[0][0]=n+4,side[0][1]=n+3; side[1][0]=n+3;side[1][1]=n+2; side[2][0]=n+2;side[2][1]=n+1; side[3][0]=n+1;side[3][1]=n+4; ho[0]=ho[1]=15-3; ho[2]=ho[3]=3; ve[0]=ve[3]=6; ve[1]=ve[2]=15-6; //endprepare cin>>W>>H; /* n+1 ------------- |3 2| n+4 |0 1|n+2 ------------- n+3 */ REP1(i,n){ cin>>tx[i]>>ty[i]>>tr[i]; } REP1(i,n)REP1(j,i-1){ event.pb(mp(dis(i,j)-tr[i]-tr[j],mp(i,j))); } REP1(i,n){ event.pb(mp(ty[i]-tr[i],mp(i,n+3))); event.pb(mp(H-ty[i]-tr[i],mp(i,n+1))); event.pb(mp(tx[i]-tr[i],mp(i,n+4))); event.pb(mp(W-tx[i]-tr[i],mp(i,n+2))); } REP1(i,m){ cin>>qr[i]>>qe[i]; query.pb(mp(2*qr[i],mp(qe[i],i))); } sort(event.begin(),event.end()); sort(query.begin(),query.end()); for(int i=0,j=0;i<SZ(query);i++){ while(j<SZ(event)&&event[j].X<query[i].X){ Union(event[j].Y.X,event[j].Y.Y); ++j; } ll ent=query[i].Y.X-1,id=query[i].Y.Y; if(is(n+2,n+4)){ ans[id]|=ho[ent]; } if(is(n+1,n+3)){ ans[id]|=ve[ent]; } if(is(side[ent][0],side[ent][1])){ ans[id]|=((1<<4)-1)^(1<<ent); } } REP1(i,m){ REP(j,4)if(!((ans[i]>>j)&1))cout<<j+1; cout<<"\n"; } return 0; } /* 5 3 16 11 11 8 1 6 10 1 7 3 2 10 4 1 15 5 1 1 1 2 2 2 1 */

Compilation message (stderr)

In file included from /usr/include/c++/9/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:33,
                 from park.cpp:1:
park.cpp: In function 'void Union(ll, ll)':
park.cpp:29:14: error: 'n' was not declared in this scope
   29 |  assert(nda<=n+4);assert(ndb<=n+4);
      |              ^