답안 #795547

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
795547 2023-07-27T11:11:03 Z RecursiveCo 이상한 기계 (APIO19_strange_device) C++14
5 / 100
607 ms 33256 KB
// CF template, version 3.0

#include <bits/stdc++.h>

using namespace std;

#define improvePerformance ios_base::sync_with_stdio(false); cin.tie(0)
#define getTest int t; cin >> t
#define eachTest for (int _var=0;_var<t;_var++)
#define get(name) int (name); cin >> (name)
#define out(o) cout << (o)
#define getList(cnt, name) vector<int> (name); for (int _=0;_<(cnt);_++) { get(a); (name).push_back(a); }
#define sortl(name) sort((name).begin(), (name).end())
#define rev(name) reverse((name).begin(), (name).end())
#define forto(name, var) for (int (var) = 0; (var) < (name); (var)++)
#define decision(b) if (b){out("YES");}else{out("NO");}

#define int long long int

int gcd(int a, int b) {
    int A = min(a, b);
    int B = max(a, b);
    if (A == 0) return B;
    return gcd(A, B % A);
}

signed main() {
    improvePerformance;
    //getTest;

    //eachTest {
        get(n);
        get(A);
        get(B);
        bool toobig = (1e18 + A - 1) / A <= B; // should be good enough, theoretically.
        vector<pair<int, int>> events;
        forto(n, i) {
            get(l);
            get(r);
            if (!toobig) {
                if (r - l + 1 >= A * B) {
                    out(A * B);
                    return 0;
                }
                l %= A * B;
                r %= A * B;
            }
            events.push_back({l, -1});
            events.push_back({r, 1});
            if (r < l) {
                events.push_back({0, -1});
                events.push_back({A * B - 1, 1});
            }
        }
        int ans = 0;
        int last = -1;
        int m = events.size();
        sortl(events);
        int balance = 0;
        forto(m, i) {
            balance -= events[i].second;
            if (last == -1 && balance > 0) {
                last = events[i].first;
            } else if (balance == 0) {
                ans += (events[i].first - last + 1) / gcd(A, B + 1);
                last = -1;
            }
        }
        out(ans);
    //}
}

Compilation message

strange_device.cpp: In function 'int main()':
strange_device.cpp:10:23: warning: unnecessary parentheses in declaration of 'n' [-Wparentheses]
   10 | #define get(name) int (name); cin >> (name)
      |                       ^
strange_device.cpp:32:9: note: in expansion of macro 'get'
   32 |         get(n);
      |         ^~~
strange_device.cpp:10:23: warning: unnecessary parentheses in declaration of 'A' [-Wparentheses]
   10 | #define get(name) int (name); cin >> (name)
      |                       ^
strange_device.cpp:33:9: note: in expansion of macro 'get'
   33 |         get(A);
      |         ^~~
strange_device.cpp:10:23: warning: unnecessary parentheses in declaration of 'B' [-Wparentheses]
   10 | #define get(name) int (name); cin >> (name)
      |                       ^
strange_device.cpp:34:9: note: in expansion of macro 'get'
   34 |         get(B);
      |         ^~~
strange_device.cpp:15:35: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   15 | #define forto(name, var) for (int (var) = 0; (var) < (name); (var)++)
      |                                   ^
strange_device.cpp:37:9: note: in expansion of macro 'forto'
   37 |         forto(n, i) {
      |         ^~~~~
strange_device.cpp:10:23: warning: unnecessary parentheses in declaration of 'l' [-Wparentheses]
   10 | #define get(name) int (name); cin >> (name)
      |                       ^
strange_device.cpp:38:13: note: in expansion of macro 'get'
   38 |             get(l);
      |             ^~~
strange_device.cpp:10:23: warning: unnecessary parentheses in declaration of 'r' [-Wparentheses]
   10 | #define get(name) int (name); cin >> (name)
      |                       ^
strange_device.cpp:39:13: note: in expansion of macro 'get'
   39 |             get(r);
      |             ^~~
strange_device.cpp:15:35: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   15 | #define forto(name, var) for (int (var) = 0; (var) < (name); (var)++)
      |                                   ^
strange_device.cpp:60:9: note: in expansion of macro 'forto'
   60 |         forto(m, i) {
      |         ^~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 5 ms 984 KB Output is correct
3 Correct 5 ms 856 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 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Incorrect 0 ms 212 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 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 259 ms 33240 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 402 ms 33256 KB Output is correct
3 Incorrect 388 ms 33176 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 402 ms 33256 KB Output is correct
3 Incorrect 388 ms 33176 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 402 ms 33256 KB Output is correct
3 Incorrect 388 ms 33176 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 49 ms 4556 KB Output is correct
3 Correct 56 ms 4480 KB Output is correct
4 Correct 607 ms 33256 KB Output is correct
5 Correct 49 ms 4564 KB Output is correct
6 Correct 54 ms 4536 KB Output is correct
7 Correct 50 ms 4500 KB Output is correct
8 Correct 50 ms 4556 KB Output is correct
9 Correct 48 ms 4556 KB Output is correct
10 Correct 52 ms 4556 KB Output is correct
11 Correct 53 ms 4564 KB Output is correct
12 Correct 46 ms 4456 KB Output is correct
13 Correct 50 ms 4556 KB Output is correct
14 Correct 507 ms 33176 KB Output is correct
15 Incorrect 63 ms 4576 KB Output isn't correct
16 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 5 ms 984 KB Output is correct
3 Correct 5 ms 856 KB Output is correct
4 Incorrect 0 ms 212 KB Output isn't correct
5 Halted 0 ms 0 KB -