답안 #346912

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
346912 2021-01-11T10:26:15 Z blue 이상한 기계 (APIO19_strange_device) C++11
35 / 100
1868 ms 17684 KB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

long long long_gcd(long long a, long long b)
{
    // cout << "gcd " << a << ' ' << b << '\n';
    if(a < b) swap(a, b);
    if(b == 0) return a;
    return long_gcd(a%b, b);
}

long long long_abs(long long x)
{
    if(x >= 0) return x;
    return -x;
}

long long long_sign(long long x)
{
    if(x > 0) return 1;
    return -1;
}

int main()
{
    int n;
    long long A, B;
    cin >> n >> A >> B;


    long long period = A * B / long_gcd(A, B+1);

    // cout << period << '\n';

    long long l, r;

    long long maxSize = 0;

    vector<long long> endpoints;

    for(int i = 1; i <= n; i++)
    {
        cin >> l >> r;
        maxSize = max(maxSize, r-l+1);

        if(l % period <= r % period)
        {
            endpoints.push_back(l % period + 1);
            endpoints.push_back(-(r % period) - 1 - 1);
        }
        else
        {
            endpoints.push_back(l % period + 1);
            endpoints.push_back(-period - 1);

            endpoints.push_back(0 + 1);
            endpoints.push_back(-(r % period) - 1 - 1);
        }
    }

    if(maxSize >= period)
    {
        cout << period << '\n';
        return 0;
    }


        // for(long long e: endpoints) cout << e << ' ';
        // cout << '\n';


    sort(endpoints.begin(), endpoints.end(), [] (long long p, long long q)
    {
        return long_abs(p) < long_abs(q);
    });

    // for(long long e: endpoints) cout << e << ' ';
    // cout << '\n';


    long long res = 0;

    long long count = 0;
    count += long_sign(endpoints[0]);
    for(int i = 1; i < endpoints.size(); i++)
    {
        // cout << count << ' ' << long_abs(endpoints[i]) - long_abs(endpoints[i-1]) << '\n';
        if(count > 0) res += long_abs(endpoints[i]) - long_abs(endpoints[i-1]);
        count += long_sign(endpoints[i]);
    }

    cout << res << '\n';
}

Compilation message

strange_device.cpp: In function 'int main()':
strange_device.cpp:87:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   87 |     for(int i = 1; i < endpoints.size(); i++)
      |                    ~~^~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 17 ms 1004 KB Output is correct
3 Correct 17 ms 1004 KB Output is correct
4 Correct 1 ms 364 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
9 Correct 1 ms 364 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 1 ms 364 KB Output is correct
12 Correct 1 ms 364 KB Output is correct
13 Correct 1 ms 364 KB Output is correct
14 Correct 1 ms 364 KB Output is correct
15 Correct 1 ms 364 KB Output is correct
16 Correct 19 ms 1004 KB Output is correct
17 Correct 180 ms 2784 KB Output is correct
18 Incorrect 1 ms 364 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 1 ms 364 KB Output is correct
5 Incorrect 1 ms 364 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 2 ms 364 KB Output is correct
3 Correct 2 ms 364 KB Output is correct
4 Correct 2 ms 364 KB Output is correct
5 Correct 1086 ms 17356 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1647 ms 17200 KB Output is correct
3 Correct 1761 ms 17332 KB Output is correct
4 Correct 1680 ms 17480 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1647 ms 17200 KB Output is correct
3 Correct 1761 ms 17332 KB Output is correct
4 Correct 1680 ms 17480 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1681 ms 17480 KB Output is correct
7 Correct 1650 ms 17580 KB Output is correct
8 Correct 1676 ms 17684 KB Output is correct
9 Correct 1805 ms 17608 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1647 ms 17200 KB Output is correct
3 Correct 1761 ms 17332 KB Output is correct
4 Correct 1680 ms 17480 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 163 ms 2912 KB Output is correct
7 Correct 169 ms 2912 KB Output is correct
8 Correct 157 ms 2868 KB Output is correct
9 Correct 165 ms 2956 KB Output is correct
10 Correct 155 ms 2932 KB Output is correct
11 Correct 163 ms 2912 KB Output is correct
12 Correct 163 ms 2912 KB Output is correct
13 Correct 174 ms 2912 KB Output is correct
14 Correct 158 ms 2912 KB Output is correct
15 Correct 180 ms 2912 KB Output is correct
16 Correct 176 ms 2912 KB Output is correct
17 Correct 160 ms 2840 KB Output is correct
18 Correct 1679 ms 17608 KB Output is correct
19 Correct 1626 ms 17352 KB Output is correct
20 Correct 1842 ms 17224 KB Output is correct
21 Correct 180 ms 2784 KB Output is correct
22 Correct 154 ms 2784 KB Output is correct
23 Correct 500 ms 9228 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 173 ms 2784 KB Output is correct
3 Correct 173 ms 2784 KB Output is correct
4 Correct 1868 ms 17448 KB Output is correct
5 Correct 177 ms 2784 KB Output is correct
6 Correct 177 ms 2784 KB Output is correct
7 Correct 175 ms 2912 KB Output is correct
8 Correct 175 ms 2784 KB Output is correct
9 Correct 169 ms 2784 KB Output is correct
10 Correct 178 ms 2784 KB Output is correct
11 Correct 172 ms 2784 KB Output is correct
12 Correct 161 ms 2656 KB Output is correct
13 Correct 178 ms 2656 KB Output is correct
14 Correct 1825 ms 17328 KB Output is correct
15 Correct 180 ms 2784 KB Output is correct
16 Correct 1616 ms 17292 KB Output is correct
17 Correct 1662 ms 17352 KB Output is correct
18 Incorrect 1 ms 364 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 17 ms 1004 KB Output is correct
3 Correct 17 ms 1004 KB Output is correct
4 Correct 1 ms 364 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
9 Correct 1 ms 364 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 1 ms 364 KB Output is correct
12 Correct 1 ms 364 KB Output is correct
13 Correct 1 ms 364 KB Output is correct
14 Correct 1 ms 364 KB Output is correct
15 Correct 1 ms 364 KB Output is correct
16 Correct 19 ms 1004 KB Output is correct
17 Correct 180 ms 2784 KB Output is correct
18 Incorrect 1 ms 364 KB Output isn't correct