Submission #260441

#TimeUsernameProblemLanguageResultExecution timeMemory
260441KastandaCircle selection (APIO18_circle_selection)C++11
Compilation error
0 ms0 KiB
// M #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 300005, INF = 1e9 + 9; int n, X[N], Y[N], R[N], M[N]; vector < int > UX; vector < pair < int , int > > V[N * 2]; set < pair < int , int > > ST[N * 2]; inline int GetId(int a) { return (int)(lower_bound(UX.begin(), UX.end(), a) - UX.begin()); } inline bool Check(int i, int j) { return ((ll)(X[i] - X[j]) * (ll)(X[i] - X[j]) + (ll)(Y[i] - Y[j]) * (ll)(Y[i] - Y[j]) <= (ll)(R[i] + R[j]) * (ll)(R[i] + R[j])); } inline void Get(int l, int r, int le, int ri, int i) { l += (int)UX.size(); r += (int)UX.size(); for (; l < r; l >>= 1, r >>= 1) { if (l & 1) { auto it = ST[l].lower_bound({le, -1}); while (it != ST[l].end() && it->first < ri) { if (M[it->second]) it = ST[l].erase(it); else if (Check(i, it->second)) M[it->second] = i, it = ST[l].erase(it); else it ++; } l ++; } if (r & 1) { r --; auto it = ST[r].lower_bound({le, -1}); while (it != ST[r].end() && it->first < ri) { if (M[it->second]) it = ST[r].erase(it); else if (Check(i, it->second)) M[it->second] = i, it = ST[r].erase(it); else it ++; } } } } inline void Do(int i) { M[i] = i; int lx = GetId(max(X[i] - R[i] * 2LL, -INF)); int rx = GetId(min(X[i] + R[i] * 2LL + 1, INF)); int ly = max(Y[i] - R[i] * 2LL, (ll)-INF); int ry = min(Y[i] + R[i] * 2LL + 1, (ll)INF); Get(lx, rx, ly, ry, i); } int main() { scanf("%d", &n); for (int i = 1; i <= n; i ++) scanf("%d%d%d", &X[i], &Y[i], &R[i]), UX.push_back(X[i]); sort(UX.begin(), UX.end()); UX.resize(unique(UX.begin(), UX.end()) - UX.begin()); for (int i = 1; i <= n; i ++) { int x = GetId(X[i]); V[x + (int)UX.size()].push_back({Y[i], i}); } for (int i = (int)UX.size(); i < (int)UX.size() * 2; i ++) sort(V[i].begin(), V[i].end()); for (int i = (int)UX.size() - 1; i; i --) merge(V[i << 1].begin(), V[i << 1].end(), V[i << 1 ^ 1].begin(), V[i << 1 ^ 1].end(), back_inserter(V[i])); for (int i = 0; i < (int)UX.size() * 2; i ++) ST[i] = set < pair < int , int > > (V[i].begin(), V[i].end()); set < pair < int , int > > TS; for (int i = 1; i <= n; i ++) TS.insert({-R[i], i}); while (TS.size()) { while (TS.size() && M[TS.begin()->second]) TS.erase(TS.begin()); if (!TS.size()) break; int i = TS.begin()->second; TS.erase(TS.begin()); Do(i); } for (int i = 1; i <= n; i ++) printf("%d ", M[i]); printf("\n"); return 0; }

Compilation message (stderr)

circle_selection.cpp: In function 'void Do(int)':
circle_selection.cpp:58:51: error: no matching function for call to 'max(long long int, int)'
         int lx = GetId(max(X[i] - R[i] * 2LL, -INF));
                                                   ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from circle_selection.cpp:2:
/usr/include/c++/7/bits/stl_algobase.h:219:5: note: candidate: template<class _Tp> const _Tp& std::max(const _Tp&, const _Tp&)
     max(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:219:5: note:   template argument deduction/substitution failed:
circle_selection.cpp:58:51: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
         int lx = GetId(max(X[i] - R[i] * 2LL, -INF));
                                                   ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from circle_selection.cpp:2:
/usr/include/c++/7/bits/stl_algobase.h:265:5: note: candidate: template<class _Tp, class _Compare> const _Tp& std::max(const _Tp&, const _Tp&, _Compare)
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:265:5: note:   template argument deduction/substitution failed:
circle_selection.cpp:58:51: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
         int lx = GetId(max(X[i] - R[i] * 2LL, -INF));
                                                   ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from circle_selection.cpp:2:
/usr/include/c++/7/bits/stl_algo.h:3462:5: note: candidate: template<class _Tp> _Tp std::max(std::initializer_list<_Tp>)
     max(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3462:5: note:   template argument deduction/substitution failed:
circle_selection.cpp:58:51: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
         int lx = GetId(max(X[i] - R[i] * 2LL, -INF));
                                                   ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from circle_selection.cpp:2:
/usr/include/c++/7/bits/stl_algo.h:3468:5: note: candidate: template<class _Tp, class _Compare> _Tp std::max(std::initializer_list<_Tp>, _Compare)
     max(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
circle_selection.cpp:58:51: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
         int lx = GetId(max(X[i] - R[i] * 2LL, -INF));
                                                   ^
circle_selection.cpp:59:54: error: no matching function for call to 'min(long long int, const int&)'
         int rx = GetId(min(X[i] + R[i] * 2LL + 1, INF));
                                                      ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from circle_selection.cpp:2:
/usr/include/c++/7/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
circle_selection.cpp:59:54: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
         int rx = GetId(min(X[i] + R[i] * 2LL + 1, INF));
                                                      ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from circle_selection.cpp:2:
/usr/include/c++/7/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
circle_selection.cpp:59:54: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
         int rx = GetId(min(X[i] + R[i] * 2LL + 1, INF));
                                                      ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from circle_selection.cpp:2:
/usr/include/c++/7/bits/stl_algo.h:3450:5: note: candidate: template<class _Tp> _Tp std::min(std::initializer_list<_Tp>)
     min(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3450:5: note:   template argument deduction/substitution failed:
circle_selection.cpp:59:54: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
         int rx = GetId(min(X[i] + R[i] * 2LL + 1, INF));
                                                      ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from circle_selection.cpp:2:
/usr/include/c++/7/bits/stl_algo.h:3456:5: note: candidate: template<class _Tp, class _Compare> _Tp std::min(std::initializer_list<_Tp>, _Compare)
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3456:5: note:   template argument deduction/substitution failed:
circle_selection.cpp:59:54: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
         int rx = GetId(min(X[i] + R[i] * 2LL + 1, INF));
                                                      ^
circle_selection.cpp: In function 'int main()':
circle_selection.cpp:67:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &n);
         ~~~~~^~~~~~~~~~
circle_selection.cpp:69:53: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
                 scanf("%d%d%d", &X[i], &Y[i], &R[i]), UX.push_back(X[i]);
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~