제출 #49977

#제출 시각아이디문제언어결과실행 시간메모리
49977zetapi원 고르기 (APIO18_circle_selection)C++14
0 / 100
1133 ms44968 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define int long long #define itr ::iterator typedef pair<int,int> pii; const int MAX=4e5; const int INF=1e12; vector< pair<int,pii> > vec; set<pii> st; set<pii> itr it,it2; int N,ind,X[MAX],Y[MAX],R[MAX],par[MAX]; void ok(int F,int S) { if((X[F]-X[S])*(X[F]-X[S])+(Y[F]-Y[S])*(Y[F]-Y[S])>(R[F]+R[S])*(R[F]+R[S])) return ; if(R[F]==R[S] and F>S) swap(F,S); if(R[F]>R[S]) swap(F,S); par[F]=S; return ; } signed main() { ios_base::sync_with_stdio(false); /*cin.tie(0); cout.tie(0);*/ cin>>N; for(int A=1;A<=N;A++) { par[A]=A; cin>>X[A]>>Y[A]>>R[A]; vec.pb(mp(Y[A]-R[A],mp(0,A))); vec.pb(mp(Y[A]+R[A],mp(1,A))); } sort(vec.begin(),vec.end()); for(int A=0;A<vec.size();A++) { ind=vec[A].second.second; if(vec[A].second.first==0) { st.insert(mp(X[ind],ind)); it=st.upper_bound(mp(X[ind],0)); if(it!=st.end()) ok(ind,it->second); it--; if(it!=st.begin()) { it--; ok(ind,it->second); } } else { it=st.find(mp(X[ind],ind)); it2=it; it2++; if(it2!=st.end() and it!=st.begin()) { it--; ok(it->second,it2->second); } st.erase(mp(X[ind],ind)); } } for(int A=1;A<=N;A++) cout<<par[A]<<" "; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

circle_selection.cpp: In function 'int main()':
circle_selection.cpp:48:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int A=0;A<vec.size();A++)
              ~^~~~~~~~~~~
#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...