답안 #978396

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
978396 2024-05-09T07:51:55 Z vjudge1 Road Construction (JOI21_road_construction) C++17
0 / 100
551 ms 28872 KB
#pragma GCC optimize("unroll-loops")
#pragma gcc optimize("Ofast")
#pragma GCC optimization("Ofast")
#pragma optimize(Ofast)
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define fastio ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define endl '\n'
#define str string
#define fs first
#define ss second
#define all(a) a.begin(), a.end()

#define print(a) for(auto x : a) cout << x << ' '; cout << endl;

void __print(signed x) { cerr << x; }
void __print(long long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\'' << x << '\''; }
void __print(const char *x) { cerr << '\"' << x << '\"'; }
void __print(const str &x) { cerr << '\"' << x << '\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }

template <typename T, typename V>
void __print(const array<int, 2> &x)
{
    cerr << '{';
    __print(x[0]);
    cerr << ',';
    __print(x[1]);
    cerr << '}';
}
template <typename T, typename V>
void __print(const pair<T, V> &x)
{
    cerr << '{';
    __print(x.fs);
    cerr << ',';
    __print(x.ss);
    cerr << '}';
}
template <typename T>
void __print(const T &x)
{
    int f = 0;
    cerr << '{';
    for (auto &y : x)
        cerr << (f++ ? "," : ""), __print(y);
    cerr << "}";
}
void _print() { cerr << "]\n"; }
template <typename T, typename... V>
void _print(T t, V... v)
{
    __print(t);
    if (sizeof...(v))
        cerr << ", ";
    _print(v...);
}

#define debug(x...)               \
    cerr << "[" << #x << "] = ["; \
    _print(x)
#ifdef ONLINE_JUDGE
#define debug(x...) 42
#endif

const int mod = 1e9 + 7;

void solve(){
    int n, k;
    cin >> n >> k;
    array<int, 2> points[n];
    for(int i = 0; i < n; i ++)
        cin >> points[i][0] >> points[i][1];
    sort(points, points + n);
    multiset<array<int, 2>> ml;
    int left[n], right[n];
    for(int i = 0; i < n; i ++)
        left[i] = i - 1, right[i] = i + 1;
    const int inf = 1e18;
    for(int i = 0; i < n; i ++){
        int mn = min((left[i] == -1 ? inf : points[i][0] - points[left[i]][0]), (right[i] == n ? inf : points[right[i]][0] - points[i][0]));
        ml.insert({mn, i});
    }
    for(int i = 0; i < k; i ++){
        array<int, 2> x = *ml.begin();
        ml.erase(ml.begin());
        cout << x[0] << endl;
        if(left[x[1]] != -1 and points[x[1]][0] - points[left[x[1]]][0] == x[0]){
            int k = left[x[1]];
            array<int, 2> y = {min((left[k] == -1 ? inf : points[k][0] - points[left[k]][0]), (right[k] == n ? inf : points[right[k]][0] - points[k][0])), k};
            ml.erase(y);
            right[k]++;
            y = {min((left[k] - 1 == -1 ? inf : points[k][0] - points[left[k]][0]), (right[k] == n ? inf : points[right[k]][0] - points[k][0])), k};
            ml.insert(y);
            left[x[1]] --;
            y = {min((left[x[1]] == -1 ? inf : points[x[1]][0] - points[left[x[1]]][0]), (right[x[1]] == n ? inf : points[right[x[1]]][0] - points[x[1]][0])), x[1]};
            ml.insert(y);
        }
        else{
            int k = right[x[1]];
            array<int, 2> y = {min((left[k] == -1 ? inf : points[k][0] - points[left[k]][0]), (right[k] == n ? inf : points[right[k]][0] - points[k][0])), k};
            ml.erase(y);
            left[k]--;
            y = {min((left[k] - 1 == -1 ? inf : points[k][0] - points[left[k]][0]), (right[k] == n ? inf : points[right[k]][0] - points[k][0])), k};
            ml.insert(y);
            right[x[1]]++;
            y = {min((left[x[1]] == -1 ? inf : points[x[1]][0] - points[left[x[1]]][0]), (right[x[1]] == n ? inf : points[right[x[1]]][0] - points[x[1]][0])), x[1]};
            ml.insert(y);
        }
    }
}

signed main()
{
    fastio;
    int t = 1;
    // cin >> t;
    while (t--)
        solve();
}

Compilation message

road_construction.cpp:2: warning: ignoring '#pragma gcc optimize' [-Wunknown-pragmas]
    2 | #pragma gcc optimize("Ofast")
      | 
road_construction.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    3 | #pragma GCC optimization("Ofast")
      | 
road_construction.cpp:4: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
    4 | #pragma optimize(Ofast)
      |
# 결과 실행 시간 메모리 Grader output
1 Incorrect 111 ms 2984 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 551 ms 28244 KB Output is correct
2 Correct 537 ms 27984 KB Output is correct
3 Runtime error 80 ms 2644 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 165 ms 28872 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 165 ms 28872 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 111 ms 2984 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 111 ms 2984 KB Output isn't correct
2 Halted 0 ms 0 KB -