Submission #382957

# Submission time Handle Problem Language Result Execution time Memory
382957 2021-03-28T15:30:09 Z abil Strange Device (APIO19_strange_device) C++14
35 / 100
710 ms 78828 KB
#include <bits/stdc++.h>

#define SPEEDUP ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
#define fr first
#define sc second
#define pb push_back
#define mk make_pair
#define all(s) s.begin(),s.end()
#define int long long

using namespace std;

const int N = (1e6 + 12);
const int mod = (1e9 + 7);
const int inf = (1e18 + 7);

int l[N], r[N];

main(){
    SPEEDUP;
    int n, A, B;
    cin >> n >> A >> B;
//    for(int i = 0; i <= 25; i++){
//        cout << i << " ";
//    }
//    cout << endl;
//    vector<int > vec;
//    for(int i = 0;i <= 25; i++){
//        cout << ((i + (i + B - 1) / B)) << " ";
//        vec.pb(((i + (i + B - 1) / B)));
//    }
//    cout << endl;
//    for(int i = 0;i <= 25; i++){
//        cout << (i % B) << " ";
//    }
//    cout << endl;
//    for(auto to : vec){
//        cout << to % A << " ";
//    }
//    cout << endl;
    for(int i = 1; i <= n; i++){
        cin >> l[i] >> r[i];
    }
    int ans = 0;
    int la = -1, ra = -1;
    for(int i = 1; i <= n; i++){
        if(la == -1){
            la = l[i], ra = r[i];
        }
        else{
            la = max(la, l[i]);
            ra = max(ra, r[i]);
        }
        ans += ra - la + 1;
        la = ra + 1;
    }
    int x;
    if(0 == (A % (B + 1ll))){
        if(inf / B >= (A / (B + 1ll))){
            x = B * (A / (B + 1ll));
        }
        else{
            cout << ans << endl;
            return 0;
        }
    }
    else{
        if(inf / A >= B){
            x = A * B;
        }
        else{
            cout << ans << endl;
            return 0;
        }
    }
    set<pair<int,int >> st;
    for(int i = 1;i <= n; i++){
        if(x <= r[i] - l[i] + 1){
            cout << x << endl;
            return 0;
        }
        if(r[i] % x >= l[i] % x){
//            cout << i << " ! " << l[i] % x << " " << r[i] % x <<endl;
            st.insert({l[i] % x, r[i] % x});
        }
        else{
//            cout << i << " ? " << 0 << " " << r[i] % x << endl;
//            cout << i << " ? " << l[i] % x << " " << x - 1 << endl;
            st.insert({0, r[i] % x});
            st.insert({l[i] % x, x - 1});
        }
    }
    ans = 0;
    la = -1, ra = -1;
    for(auto to : st){
        if(la == -1){
            la = to.fr, ra = to.sc;
        }
        else{
            la = max(la, to.fr);
            ra = max(ra, to.sc);
        }
        if(la <= ra){
            ans += ra - la + 1;
            la = ra + 1;
        }
    }
    cout << ans;
}

Compilation message

strange_device.cpp:19:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   19 | main(){
      |      ^
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 8 ms 1260 KB Output is correct
3 Correct 7 ms 1276 KB Output is correct
4 Incorrect 1 ms 364 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 1 ms 364 KB Output is correct
5 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 2 ms 492 KB Output is correct
3 Correct 2 ms 492 KB Output is correct
4 Correct 2 ms 492 KB Output is correct
5 Correct 306 ms 15928 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 653 ms 78744 KB Output is correct
3 Correct 673 ms 78572 KB Output is correct
4 Correct 662 ms 78620 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 653 ms 78744 KB Output is correct
3 Correct 673 ms 78572 KB Output is correct
4 Correct 662 ms 78620 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 656 ms 78700 KB Output is correct
7 Correct 710 ms 78700 KB Output is correct
8 Correct 654 ms 78572 KB Output is correct
9 Incorrect 675 ms 78612 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 653 ms 78744 KB Output is correct
3 Correct 673 ms 78572 KB Output is correct
4 Correct 662 ms 78620 KB Output is correct
5 Correct 2 ms 364 KB Output is correct
6 Correct 68 ms 8300 KB Output is correct
7 Correct 64 ms 8172 KB Output is correct
8 Correct 60 ms 8172 KB Output is correct
9 Correct 64 ms 8172 KB Output is correct
10 Correct 60 ms 8172 KB Output is correct
11 Correct 62 ms 8172 KB Output is correct
12 Correct 60 ms 8172 KB Output is correct
13 Correct 62 ms 8172 KB Output is correct
14 Correct 80 ms 8172 KB Output is correct
15 Correct 65 ms 8172 KB Output is correct
16 Correct 64 ms 8172 KB Output is correct
17 Correct 61 ms 8172 KB Output is correct
18 Correct 678 ms 78828 KB Output is correct
19 Correct 673 ms 78700 KB Output is correct
20 Correct 686 ms 78588 KB Output is correct
21 Correct 62 ms 8172 KB Output is correct
22 Correct 82 ms 8172 KB Output is correct
23 Correct 130 ms 5740 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 65 ms 8204 KB Output is correct
3 Correct 66 ms 8172 KB Output is correct
4 Correct 669 ms 78700 KB Output is correct
5 Correct 63 ms 8192 KB Output is correct
6 Correct 64 ms 8160 KB Output is correct
7 Correct 64 ms 8172 KB Output is correct
8 Correct 62 ms 8172 KB Output is correct
9 Correct 81 ms 8172 KB Output is correct
10 Correct 60 ms 8172 KB Output is correct
11 Correct 62 ms 8172 KB Output is correct
12 Correct 61 ms 8172 KB Output is correct
13 Correct 62 ms 8172 KB Output is correct
14 Correct 675 ms 78644 KB Output is correct
15 Incorrect 65 ms 8172 KB Output isn't correct
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 8 ms 1260 KB Output is correct
3 Correct 7 ms 1276 KB Output is correct
4 Incorrect 1 ms 364 KB Output isn't correct
5 Halted 0 ms 0 KB -