답안 #978404

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
978404 2024-05-09T07:55:55 Z vjudge1 Road Construction (JOI21_road_construction) C++17
6 / 100
603 ms 28132 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];
        if(i < k - 1)
            cout << 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 ? 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 ? 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 105 ms 2904 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 582 ms 25028 KB Output is correct
2 Correct 603 ms 25064 KB Output is correct
3 Correct 133 ms 2960 KB Output is correct
4 Correct 235 ms 27984 KB Output is correct
5 Correct 213 ms 27860 KB Output is correct
6 Correct 248 ms 28132 KB Output is correct
7 Correct 240 ms 27360 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 163 ms 23816 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 163 ms 23816 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 105 ms 2904 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 105 ms 2904 KB Output isn't correct
2 Halted 0 ms 0 KB -