제출 #236911

#제출 시각아이디문제언어결과실행 시간메모리
236911DS007Coin Collecting (JOI19_ho_t4)C++14
100 / 100
100 ms14308 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

int solveTestCase() {
    int n;
    cin >> n;

    vector<pair<int, int>> up, down, up_, down_;
    for (int i = 0; i < n * 2; i++) {
        int x, y;
        cin >> x >> y;

        if (y <= 1)
            down.emplace_back(x, y);
        else
            up.emplace_back(x, y);
    }

    sort(up.begin(), up.end());
    sort(down.begin(), down.end());

    int ans = 0;
    for (int i = 1, p1 = 0, p2 = 0, i1 = 1, i2 = 1; i <= n; i++) {
        while (p1 < up.size() && up[p1].first <= (i == n ? 1e9 : i))
            up_.push_back(up[p1++]);
        while (p2 < down.size() && down[p2].first <= (i == n ? 1e9 : i))
            down_.push_back(down[p2++]);

        while (i1 <= i && !up_.empty())
            ans += abs(up_.back().first - i1++) + abs(up_.back().second - 2), up_.pop_back();
        while (i2 <= i && !down_.empty())
            ans += abs(down_.back().first - i2++) + abs(down_.back().second - 1), down_.pop_back();
        while (i1 <= i && !down_.empty())
            ans += abs(down_.back().first - i1++) + abs(down_.back().second - 2), down_.pop_back();
        while (i2 <= i && !up_.empty())
            ans += abs(up_.back().first - i2++) + abs(up_.back().second - 1), up_.pop_back();
    }

    cout << ans;
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int test = 1;
    // cin >> test;
    while (test--)
        solveTestCase();
}

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

joi2019_ho_t4.cpp: In function 'long long int solveTestCase()':
joi2019_ho_t4.cpp:25:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while (p1 < up.size() && up[p1].first <= (i == n ? 1e9 : i))
                ~~~^~~~~~~~~~~
joi2019_ho_t4.cpp:27:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while (p2 < down.size() && down[p2].first <= (i == n ? 1e9 : i))
                ~~~^~~~~~~~~~~~~
joi2019_ho_t4.cpp:41:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...