답안 #568697

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
568697 2022-05-26T05:35:51 Z joshjms 이상한 기계 (APIO19_strange_device) C++14
5 / 100
611 ms 48944 KB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ld long double
#define pb push_back
#define fi first
#define se second
#define debug(x) cout << #x << " => " << x << "\n";

const long long mod = 1e9 + 7;
const long long MAX = 1e18;

int n, a, b, L[1000005], R[1000005], s, m;
vector <pair<int,int>> ls;
int cnt, prv, ans;

void solve () {
    cin >> n >> a >> b;

    for(int i = 1; i <= n; i++) {
        cin >> L[i] >> R[i];
        s += R[i] - L[i] + 1;
    }

    if(MAX / a < b) {
        cout << s << "\n";
        return;
    }

    m = a * b;

    for(int i = 1; i <= n; i++) {
        L[i] %= m;
        R[i] %= m;

        if(R[i] < L[i]) {
            ls.pb({L[i], 0});
            ls.pb({m, 1});
            ls.pb({0, 0});
            ls.pb({R[i] + 1, 1});
        }
        else {
            ls.pb({L[i], 0});
            ls.pb({R[i] + 1, 1});
        }
    }
    
    sort(ls.begin(), ls.end());
    cnt = 0, prv = -1;

    // for(auto i : ls) cout << i.fi << " ";
    // cout << "\n";

    for(int i = 0; i < ls.size(); i++) {
        if(ls[i].se == 0) cnt++;
        else cnt--;

        if(i < ls.size() - 1 && ls[i].fi == ls[i + 1].fi) continue;

        if(cnt > 0 && prv == -1) {prv = ls[i].fi;}
        if(cnt == 0 && prv != -1) {ans += ls[i].fi - prv; prv = -1;}
    }

    cout << ans << "\n";

}

signed main () {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    solve();
}

Compilation message

strange_device.cpp: In function 'void solve()':
strange_device.cpp:55:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |     for(int i = 0; i < ls.size(); i++) {
      |                    ~~^~~~~~~~~~~
strange_device.cpp:59:14: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |         if(i < ls.size() - 1 && ls[i].fi == ls[i + 1].fi) continue;
      |            ~~^~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 7 ms 1112 KB Output is correct
3 Correct 5 ms 1112 KB Output is correct
4 Incorrect 0 ms 212 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 340 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 344 ms 48932 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 480 ms 48944 KB Output is correct
3 Incorrect 466 ms 48844 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 480 ms 48944 KB Output is correct
3 Incorrect 466 ms 48844 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 480 ms 48944 KB Output is correct
3 Incorrect 466 ms 48844 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 60 ms 6060 KB Output is correct
3 Correct 74 ms 6112 KB Output is correct
4 Correct 611 ms 48876 KB Output is correct
5 Correct 55 ms 6140 KB Output is correct
6 Correct 54 ms 6068 KB Output is correct
7 Correct 53 ms 6156 KB Output is correct
8 Correct 55 ms 6044 KB Output is correct
9 Correct 51 ms 6084 KB Output is correct
10 Correct 54 ms 6036 KB Output is correct
11 Correct 53 ms 6020 KB Output is correct
12 Correct 48 ms 6124 KB Output is correct
13 Correct 56 ms 6144 KB Output is correct
14 Correct 575 ms 48892 KB Output is correct
15 Incorrect 57 ms 6088 KB Output isn't correct
16 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 7 ms 1112 KB Output is correct
3 Correct 5 ms 1112 KB Output is correct
4 Incorrect 0 ms 212 KB Output isn't correct
5 Halted 0 ms 0 KB -