답안 #240417

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
240417 2020-06-19T15:15:21 Z valerikk 이상한 기계 (APIO19_strange_device) C++11
25 / 100
5000 ms 511872 KB
#include<bits/stdc++.h>
using namespace std;

#define ll long long

ll gcd(ll a, ll b) {
    while (b != 0LL) {
        a %= b;
        swap(a, b);
    }
    return a;
}

struct E {
    ll x;
    int k;
    ll l, r;

    bool operator<(const E& o) {
        return x < o.x || (x == o.x && k < o.k);
    }

    E() {}
    E(ll x, int k, ll l, ll r) : x(x), k(k), l(l), r(r) {}
};

ll n, a, b;

ll p;

vector<E> v;

void push(ll l, ll r, ll x, ll y) {
    v.emplace_back(l, 0, x, y);
    v.emplace_back(r+1, 1, x, y);
}

void add(ll l, ll r, ll x, ll y) {
    if (x <= y) {
        push(l, r, x, y);
    } else {
        push(l, r, 0LL, y);
        push(l, r, x, p-1LL);
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> a >> b;
    p = a/gcd(a, b+1);
    while (n--) {
        ll l, r;
        cin >> l >> r;
        ll x = l/b, y = r/b;
        if (x == y) {
            add(l%b, r%b, x%p, y%p);
        } else {
            if (y-x > 1) {
                add(0LL, b-1LL, (x+1LL)%p, (y-1LL)%p);
            }
            add(l%b, b-1LL, x%p, x%p);
            add(0LL, r%b, y%p, y%p);
        }
    }
    sort(v.begin(), v.end());
    multiset<pair<ll, ll>> s;
    ll ans = 0;
    for (int i = 0; i+1 < v.size(); ++i) {
        if (v[i].k) {
            s.erase(s.find({v[i].l, v[i].r}));
        } else {
            s.insert({v[i].l, v[i].r});
        }
        ll d = v[i+1].x-v[i].x;
        if (d) {
            vector<pair<ll, ll>> u;
            for (auto ss : s) {
                u.emplace_back(ss.first, 1);
                u.emplace_back(ss.second+1, -1);
            }
            sort(u.begin(), u.end());
            ll q = 0;
            int bal = 0;
            for (int j = 0; j+1 < u.size(); ++j) {
                bal += u[j].second;
                if (bal) q += u[j+1].first-u[j].first;
            }
            ans += q*d;
        }
    }
    cout << ans;
    return 0;
}

Compilation message

strange_device.cpp: In function 'int main()':
strange_device.cpp:69:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i+1 < v.size(); ++i) {
                     ~~~~^~~~~~~~~~
strange_device.cpp:85:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for (int j = 0; j+1 < u.size(); ++j) {
                             ~~~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 28 ms 1788 KB Output is correct
3 Correct 19 ms 1916 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 7 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 6 ms 384 KB Output is correct
15 Correct 7 ms 384 KB Output is correct
16 Correct 30 ms 1788 KB Output is correct
17 Correct 92 ms 9064 KB Output is correct
18 Correct 5 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Incorrect 4 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 22 ms 896 KB Output is correct
3 Correct 12 ms 640 KB Output is correct
4 Correct 41 ms 640 KB Output is correct
5 Correct 2323 ms 508404 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 1146 ms 180136 KB Output is correct
3 Correct 2683 ms 511836 KB Output is correct
4 Correct 2782 ms 511872 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 1146 ms 180136 KB Output is correct
3 Correct 2683 ms 511836 KB Output is correct
4 Correct 2782 ms 511872 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 3725 ms 446200 KB Output is correct
7 Correct 1330 ms 133520 KB Output is correct
8 Correct 4037 ms 445292 KB Output is correct
9 Correct 3848 ms 442088 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 1146 ms 180136 KB Output is correct
3 Correct 2683 ms 511836 KB Output is correct
4 Correct 2782 ms 511872 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 335 ms 28784 KB Output is correct
7 Correct 564 ms 48412 KB Output is correct
8 Correct 496 ms 48284 KB Output is correct
9 Correct 508 ms 48156 KB Output is correct
10 Correct 1318 ms 22348 KB Output is correct
11 Correct 3776 ms 46752 KB Output is correct
12 Correct 3829 ms 48272 KB Output is correct
13 Correct 2780 ms 52348 KB Output is correct
14 Correct 147 ms 8680 KB Output is correct
15 Execution timed out 5041 ms 27272 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 1018 ms 8676 KB Output is correct
3 Execution timed out 5073 ms 8676 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 28 ms 1788 KB Output is correct
3 Correct 19 ms 1916 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 7 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 6 ms 384 KB Output is correct
15 Correct 7 ms 384 KB Output is correct
16 Correct 30 ms 1788 KB Output is correct
17 Correct 92 ms 9064 KB Output is correct
18 Correct 5 ms 384 KB Output is correct
19 Correct 5 ms 384 KB Output is correct
20 Correct 5 ms 384 KB Output is correct
21 Correct 5 ms 384 KB Output is correct
22 Incorrect 4 ms 384 KB Output isn't correct
23 Halted 0 ms 0 KB -