제출 #1167378

#제출 시각아이디문제언어결과실행 시간메모리
1167378henriessRoad Construction (JOI21_road_construction)C++20
7 / 100
10111 ms928504 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long n,k;cin >> n >> k; vector<long long> X(n); vector<long long> Y(n); vector<vector<long long>> points(n,vector<long long>(3)); vector<vector<long long>> points2(n,vector<long long>(3)); for(int i = 0;i<n;i++){ cin >> X[i];cin >> Y[i]; points[i][0]= X[i]; points[i][1] = Y[i]; points[i][2] = i; points2[i][0] = Y[i]; points2[i][1] = X[i]; points2[i][2] = i; } //obviously I can't construct all possible pairs of roads //as that will tle sort(points.begin(),points.end()); sort(points2.begin(),points2.end()); //Subtask 1 : N <= 1000; //ok grabbed subtask 1 //subtask 3, k = 1 //subatsk 4 : k <= 10, basically the same as subtask 3 but a larger range vector<long long> dist; set<pair<long long,long long>> s; for(int i = 0;i<n;i++){ long long x = points[i][0]; long long y = points[i][1]; long long id = points[i][2]; long long n1 = LLONG_MAX; long long n2 = LLONG_MAX; long long left = max(0LL,i-k); long long right = min(n-1,i+k); for(int j = i+1;j<=right;j++){ if (s.find({min(id,points[j][2]),max(id,points[j][2])}) == s.end()){ n2 = abs(x - points[j][0]) + abs(y - points[j][1]); dist.push_back(n2); s.insert({min(id,points[j][2]),max(id,points[j][2])}); } } } for(int i = 0;i<n;i++){ long long y = points2[i][0]; long long x = points2[i][1]; long long id = points2[i][2]; long long n1 = LLONG_MAX; long long n2 = LLONG_MAX; long long left = max(0LL,i-k); long long right = min(n-1,i+k); for(int j = i+1;j<=right;j++){ if (s.find({min(id,points[j][2]),max(id,points[j][2])}) == s.end()){ n2 = abs(y - points2[j][0]) + abs(x - points2[j][1]); dist.push_back(n2); s.insert({min(id,points[j][2]),max(id,points[j][2])}); } } } sort(dist.begin(),dist.end()); for(int i = 0;i<k;i++){ cout << dist[i] << '\n'; } }
#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...