답안 #795549

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
795549 2023-07-27T11:12:05 Z RecursiveCo 이상한 기계 (APIO19_strange_device) C++14
5 / 100
597 ms 33304 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 / gcd(A, B + 1));
                    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 1 ms 212 KB Output is correct
2 Correct 4 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 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 258 ms 33172 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 407 ms 33304 KB Output is correct
3 Incorrect 370 ms 33184 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 407 ms 33304 KB Output is correct
3 Incorrect 370 ms 33184 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 407 ms 33304 KB Output is correct
3 Incorrect 370 ms 33184 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 49 ms 4508 KB Output is correct
3 Correct 47 ms 4528 KB Output is correct
4 Correct 597 ms 33288 KB Output is correct
5 Correct 48 ms 4556 KB Output is correct
6 Correct 47 ms 4564 KB Output is correct
7 Correct 51 ms 4504 KB Output is correct
8 Correct 55 ms 4548 KB Output is correct
9 Correct 45 ms 4556 KB Output is correct
10 Correct 47 ms 4556 KB Output is correct
11 Correct 44 ms 4524 KB Output is correct
12 Correct 40 ms 4468 KB Output is correct
13 Correct 48 ms 4568 KB Output is correct
14 Correct 493 ms 33244 KB Output is correct
15 Incorrect 46 ms 4504 KB Output isn't correct
16 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 4 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 -