Submission #682410

#TimeUsernameProblemLanguageResultExecution timeMemory
682410vjudge1Road Construction (JOI21_road_construction)C++17
100 / 100
3129 ms21824 KiB
#include <bits/stdc++.h> #pragma comment(linker, "/stack:200000000") #pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native") using namespace std; #define int long long #define ll long long #define vi vector<long long> #define pb push_back #define sz(s) (int)s.size() #define all(v) v.begin(), v.end() #define show(a) cerr << #a <<" -> "<< a <<"\n" #define pp pair<int,int> #define FF first #define SS second #define endl "\n" #define ld long double const int N = 1e6 + 2, N3 = 1e3 + 6, inf = 1e18 + 7, LOG = 20; map<char, int> md{{'N', 0}, {'E', 1}, {'S', 2}, {'W', 3}}; const int dx[] = {-1, 0, 1, 0}; const int dy[] = {0, 1, 0, -1}; string stepDir = "RDLU"; int n, k, x[N], y[N]; multiset <int> st; vector <pp> v; //bool check(int z) { // int cnt = 0; // for (int i = 1; i < sz(v); i++) { // for (int j = 0; j < i; j++) { // if (cnt >= k) return 1; // if (abs(v[i].FF - v[j].FF) > z) break; // if (abs(v[i].FF - v[j].FF) + abs(v[i].SS - v[j].SS) <= z) { // cnt++; //// cout << abs(v[i].FF - v[j].FF) + abs(y[i] - y[j]) << " " << x[j] << " " << y[j] << " " << cnt << "\n"; // } // } //// cout << cnt << " "; // } // return cnt >= k; //} main () { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen(".in", "r", stdin); // freopen(".out", "w", stdout); cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> x[i] >> y[i]; v.pb({x[i], y[i]}); } sort(all(v)); // int l = 0, r = inf, best = -1; // while (l <= r) { // int mid = (l + r) / 2; // if (check(mid)) { // best = mid; // r = mid - 1; // } // else l = mid + 1; // } vi ans; int cnt = 0; for (int i = 1; i < sz(v); i++) { for (int j = max(0ll, i - 1000); j < i; j++) { if (sz(st) < k) { st.insert(abs(v[i].FF - v[j].FF) + abs(v[i].SS - v[j].SS)); } else { if (*st.rbegin() > abs(v[i].FF - v[j].FF) + abs(v[i].SS - v[j].SS)) { st.erase(st.find(*st.rbegin())); st.insert(abs(v[i].FF - v[j].FF) + abs(v[i].SS - v[j].SS)); } } } } for (auto to : st) { cout << to << "\n"; } return 0; }

Compilation message (stderr)

road_construction.cpp:3: warning: ignoring '#pragma comment ' [-Wunknown-pragmas]
    3 | #pragma comment(linker, "/stack:200000000")
      | 
road_construction.cpp:48:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   48 | main () {
      | ^~~~
road_construction.cpp: In function 'int main()':
road_construction.cpp:74:9: warning: unused variable 'cnt' [-Wunused-variable]
   74 |     int cnt = 0;
      |         ^~~
#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...