제출 #453752

#제출 시각아이디문제언어결과실행 시간메모리
453752arminatarod원 고르기 (APIO18_circle_selection)C++17
0 / 100
3078 ms545460 KiB
#include <bits/stdc++.h> using namespace std; constexpr int MAXN = 300005; constexpr int MAXINT = 1073741823; vector<int> all_numbers; vector<int> neighbors[MAXN]; struct circles { long long int x, y, radius; } circle[MAXN]; int sorted[MAXN], answer[MAXN]; int the_radius; bitset<MAXN> deleted; bool comparison(int x, int y) { return (circle[x].radius == circle[y].radius? x < y : circle[x].radius > circle[y].radius); } bool check(circles u, circles v) { long long int distance_2 = (u.x - v.x) * (u.x - v.x) + (u.y - v.y) * (u.y - v.y); long long int radius_2 = (u.radius + v.radius) * (u.radius + v.radius); return (radius_2 >= distance_2); } map<pair<int, int>, vector<int>> circles_of; pair<int, int> get_cell(int x, int y) { pair<int, int> result; result.first = (x >= 0? x / the_radius : (x - the_radius + 1) / the_radius); result.second = (y >= 0? y / the_radius : (y - the_radius + 1) / the_radius); return result; } int main() { ios::sync_with_stdio(false); cin.tie(0); long long int n, distance_2, radius_2; pair<int, int> center_cell; cin >> n; for (int i = 0; i < n; i++) { cin >> circle[i].x >> circle[i].y >> circle[i].radius; the_radius = circle[i].radius; circles_of[get_cell(circle[i].x, circle[i].y)].push_back(i); sorted[i] = i; } sort(sorted, sorted + n, comparison); for (int i = 0; i < n; i++) if (!deleted[sorted[i]]) { center_cell = get_cell(circle[sorted[i]].x, circle[sorted[i]].y); for (int x = center_cell.first - 2; x <= center_cell.first + 2; x++) for (int y = center_cell.second - 2; y <= center_cell.second + 2; y++) for (int j : circles_of[make_pair(x, y)]) if (check(circle[j], circle[sorted[i]])) { answer[j] = sorted[i]; deleted[j] = true; } } for (int i = 0; i < n; i++) cout << answer[i] + 1 << ' '; return 0; }

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

circle_selection.cpp: In function 'int main()':
circle_selection.cpp:45:19: warning: unused variable 'distance_2' [-Wunused-variable]
   45 |  long long int n, distance_2, radius_2;
      |                   ^~~~~~~~~~
circle_selection.cpp:45:31: warning: unused variable 'radius_2' [-Wunused-variable]
   45 |  long long int n, distance_2, radius_2;
      |                               ^~~~~~~~
#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...