답안 #795541

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
795541 2023-07-27T11:06:30 Z RecursiveCo 이상한 기계 (APIO19_strange_device) C++14
5 / 100
609 ms 33352 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

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:25:9: note: in expansion of macro 'get'
   25 |         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:26:9: note: in expansion of macro 'get'
   26 |         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:27:9: note: in expansion of macro 'get'
   27 |         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:30:9: note: in expansion of macro 'forto'
   30 |         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:31:13: note: in expansion of macro 'get'
   31 |             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:32:13: note: in expansion of macro 'get'
   32 |             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:53:9: note: in expansion of macro 'forto'
   53 |         forto(m, i) {
      |         ^~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 5 ms 904 KB Output is correct
3 Correct 5 ms 984 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 265 ms 33352 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 425 ms 33184 KB Output is correct
3 Incorrect 394 ms 33244 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 425 ms 33184 KB Output is correct
3 Incorrect 394 ms 33244 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 425 ms 33184 KB Output is correct
3 Incorrect 394 ms 33244 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 47 ms 4584 KB Output is correct
3 Correct 48 ms 4680 KB Output is correct
4 Correct 609 ms 33272 KB Output is correct
5 Correct 48 ms 4548 KB Output is correct
6 Correct 55 ms 4536 KB Output is correct
7 Correct 50 ms 4520 KB Output is correct
8 Correct 48 ms 4480 KB Output is correct
9 Correct 49 ms 4548 KB Output is correct
10 Correct 49 ms 4544 KB Output is correct
11 Correct 53 ms 4544 KB Output is correct
12 Correct 40 ms 4480 KB Output is correct
13 Correct 47 ms 4556 KB Output is correct
14 Correct 491 ms 33196 KB Output is correct
15 Incorrect 46 ms 4556 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 904 KB Output is correct
3 Correct 5 ms 984 KB Output is correct
4 Incorrect 0 ms 212 KB Output isn't correct
5 Halted 0 ms 0 KB -