Submission #346910

# Submission time Handle Problem Language Result Execution time Memory
346910 2021-01-11T10:25:01 Z blue Strange Device (APIO19_strange_device) C++11
65 / 100
1804 ms 17388 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;

    vector<long long> endpoints;

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

        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);
        }
    }


        // 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:78:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |     for(int i = 1; i < endpoints.size(); i++)
      |                    ~~^~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 16 ms 748 KB Output is correct
3 Correct 17 ms 748 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 0 ms 364 KB Output is correct
11 Correct 0 ms 364 KB Output is correct
12 Correct 1 ms 268 KB Output is correct
13 Correct 1 ms 364 KB Output is correct
14 Correct 0 ms 364 KB Output is correct
15 Correct 1 ms 364 KB Output is correct
16 Correct 16 ms 748 KB Output is correct
17 Correct 175 ms 2636 KB Output is correct
18 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 364 KB Output is correct
2 Incorrect 0 ms 364 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory 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 3 ms 364 KB Output is correct
5 Correct 1079 ms 16988 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1604 ms 16876 KB Output is correct
3 Correct 1688 ms 16840 KB Output is correct
4 Correct 1596 ms 17040 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1604 ms 16876 KB Output is correct
3 Correct 1688 ms 16840 KB Output is correct
4 Correct 1596 ms 17040 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1646 ms 16840 KB Output is correct
7 Correct 1629 ms 16840 KB Output is correct
8 Correct 1612 ms 16908 KB Output is correct
9 Correct 1804 ms 17096 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1604 ms 16876 KB Output is correct
3 Correct 1688 ms 16840 KB Output is correct
4 Correct 1596 ms 17040 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 156 ms 2656 KB Output is correct
7 Correct 161 ms 2600 KB Output is correct
8 Correct 152 ms 2656 KB Output is correct
9 Correct 160 ms 2656 KB Output is correct
10 Correct 152 ms 2656 KB Output is correct
11 Correct 176 ms 2656 KB Output is correct
12 Correct 159 ms 2656 KB Output is correct
13 Correct 169 ms 2656 KB Output is correct
14 Correct 152 ms 2668 KB Output is correct
15 Correct 172 ms 2656 KB Output is correct
16 Correct 177 ms 2656 KB Output is correct
17 Correct 154 ms 2656 KB Output is correct
18 Correct 1638 ms 17056 KB Output is correct
19 Correct 1589 ms 17372 KB Output is correct
20 Correct 1767 ms 17388 KB Output is correct
21 Correct 173 ms 2784 KB Output is correct
22 Correct 149 ms 2784 KB Output is correct
23 Correct 489 ms 8916 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 166 ms 2784 KB Output is correct
3 Correct 166 ms 2784 KB Output is correct
4 Correct 1776 ms 17224 KB Output is correct
5 Correct 168 ms 2784 KB Output is correct
6 Correct 168 ms 2784 KB Output is correct
7 Correct 174 ms 2884 KB Output is correct
8 Correct 173 ms 2784 KB Output is correct
9 Correct 167 ms 2784 KB Output is correct
10 Correct 170 ms 2784 KB Output is correct
11 Correct 168 ms 2804 KB Output is correct
12 Correct 157 ms 2784 KB Output is correct
13 Correct 171 ms 2784 KB Output is correct
14 Correct 1748 ms 16968 KB Output is correct
15 Correct 171 ms 2656 KB Output is correct
16 Correct 1551 ms 16968 KB Output is correct
17 Correct 1601 ms 17112 KB Output is correct
18 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 16 ms 748 KB Output is correct
3 Correct 17 ms 748 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 0 ms 364 KB Output is correct
11 Correct 0 ms 364 KB Output is correct
12 Correct 1 ms 268 KB Output is correct
13 Correct 1 ms 364 KB Output is correct
14 Correct 0 ms 364 KB Output is correct
15 Correct 1 ms 364 KB Output is correct
16 Correct 16 ms 748 KB Output is correct
17 Correct 175 ms 2636 KB Output is correct
18 Correct 1 ms 364 KB Output is correct
19 Correct 0 ms 364 KB Output is correct
20 Incorrect 0 ms 364 KB Output isn't correct
21 Halted 0 ms 0 KB -