Submission #382945

# Submission time Handle Problem Language Result Execution time Memory
382945 2021-03-28T15:08:05 Z abil Strange Device (APIO19_strange_device) C++14
35 / 100
721 ms 78956 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 7 ms 1132 KB Output is correct
3 Correct 7 ms 1132 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 15980 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 656 ms 78744 KB Output is correct
3 Correct 721 ms 78768 KB Output is correct
4 Correct 667 ms 78956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 656 ms 78744 KB Output is correct
3 Correct 721 ms 78768 KB Output is correct
4 Correct 667 ms 78956 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 675 ms 78808 KB Output is correct
7 Correct 668 ms 78700 KB Output is correct
8 Correct 658 ms 78780 KB Output is correct
9 Incorrect 690 ms 78572 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 656 ms 78744 KB Output is correct
3 Correct 721 ms 78768 KB Output is correct
4 Correct 667 ms 78956 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 77 ms 8172 KB Output is correct
7 Correct 82 ms 8172 KB Output is correct
8 Correct 82 ms 8172 KB Output is correct
9 Correct 65 ms 8172 KB Output is correct
10 Correct 61 ms 8172 KB Output is correct
11 Correct 63 ms 8172 KB Output is correct
12 Correct 61 ms 8172 KB Output is correct
13 Correct 64 ms 8300 KB Output is correct
14 Correct 60 ms 8172 KB Output is correct
15 Correct 66 ms 8172 KB Output is correct
16 Correct 66 ms 8172 KB Output is correct
17 Correct 65 ms 8172 KB Output is correct
18 Correct 653 ms 78700 KB Output is correct
19 Correct 654 ms 78564 KB Output is correct
20 Correct 685 ms 78668 KB Output is correct
21 Correct 100 ms 8172 KB Output is correct
22 Correct 64 ms 8172 KB Output is correct
23 Correct 128 ms 5740 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 64 ms 8172 KB Output is correct
3 Correct 65 ms 8172 KB Output is correct
4 Correct 669 ms 78572 KB Output is correct
5 Correct 62 ms 8172 KB Output is correct
6 Correct 66 ms 8172 KB Output is correct
7 Correct 67 ms 8172 KB Output is correct
8 Correct 68 ms 8172 KB Output is correct
9 Correct 63 ms 8172 KB Output is correct
10 Correct 67 ms 8300 KB Output is correct
11 Correct 62 ms 8172 KB Output is correct
12 Correct 63 ms 8172 KB Output is correct
13 Correct 64 ms 8172 KB Output is correct
14 Correct 716 ms 78572 KB Output is correct
15 Incorrect 67 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 7 ms 1132 KB Output is correct
3 Correct 7 ms 1132 KB Output is correct
4 Incorrect 1 ms 364 KB Output isn't correct
5 Halted 0 ms 0 KB -