Submission #232629

# Submission time Handle Problem Language Result Execution time Memory
232629 2020-05-17T17:34:38 Z limabeans Strange Device (APIO19_strange_device) C++17
5 / 100
615 ms 48532 KB
#include <bits/stdc++.h>
using namespace std;

template<typename T>
void out(T x) { cout << x << endl; exit(0); }
#define watch(x) cout << (#x) << " is " << (x) << endl




typedef long long ll;
const ll mod = 1e9+7;
const int maxn = 1e6 + 5;



ll n, a, b;


ll getx(ll t) {
    return (t+t/b)%a;
}

ll gety(ll t) {
    return t%b;
}






ll merge(vector<pair<ll,ll>> v) {
    sort(v.begin(), v.end());
    // for (auto p: v) {
    // 	cout<<p.first<<" "<<p.second<<endl;
    // }
    
    ll res = 0;

    n = v.size();
    auto cur = v.front();
    for (int i=1; i<n; i++) {
	ll x=v[i].first;
	ll y=v[i].second;
	if (x>cur.second) {
	    res += cur.second-cur.first+1;
	    cur = v[i];
	} else {
	    cur.second=max(cur.second,y);
	}
    }
    res += cur.second-cur.first+1;
    return res;
}

vector<pair<ll,ll>> v;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);  cout.tie(0);

    cin>>n>>a>>b;

    v.resize(n);
    for (int i=0; i<n; i++) {
	cin>>v[i].first>>v[i].second;
    }


    auto safe_lcm = [](ll x, ll y) {
	ll tmp = x / __gcd(x,y);
	if (tmp > 1e18/y) return (ll)1e18 + 1;
	return tmp*y;
    };

    ll lcm = safe_lcm(a, b);

    if (lcm>1e18) {
	//merge intervals
	ll res = merge(v);
	out(res);
    }



    vector<pair<ll,ll>> cv;
    
    for (int i=0; i<n; i++) {
	v[i].first %= (a*b);
	v[i].second %= (a*b);
	if (v[i].second>=v[i].first) {
	    cv.push_back(v[i]);
	} else {
	    
	    assert(v[i].first>v[i].second);
	    
	    cv.push_back({v[i].first,a*b});
	    cv.push_back({1,v[i].second});
	}
    }




    ll ans = merge(cv);
    out(ans);  

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 10 ms 1280 KB Output is correct
3 Correct 10 ms 1280 KB Output is correct
4 Incorrect 4 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Incorrect 4 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 392 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 256 KB Output is correct
4 Correct 6 ms 384 KB Output is correct
5 Correct 376 ms 47956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 529 ms 48256 KB Output is correct
3 Incorrect 549 ms 48440 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 529 ms 48256 KB Output is correct
3 Incorrect 549 ms 48440 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 529 ms 48256 KB Output is correct
3 Incorrect 549 ms 48440 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 424 KB Output is correct
2 Correct 59 ms 8812 KB Output is correct
3 Correct 60 ms 8940 KB Output is correct
4 Correct 615 ms 48532 KB Output is correct
5 Correct 60 ms 8812 KB Output is correct
6 Correct 66 ms 8812 KB Output is correct
7 Correct 59 ms 8940 KB Output is correct
8 Correct 62 ms 8812 KB Output is correct
9 Correct 61 ms 8940 KB Output is correct
10 Correct 59 ms 8940 KB Output is correct
11 Correct 65 ms 8940 KB Output is correct
12 Correct 55 ms 8812 KB Output is correct
13 Correct 61 ms 8940 KB Output is correct
14 Correct 578 ms 48468 KB Output is correct
15 Incorrect 63 ms 8940 KB Output isn't correct
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 10 ms 1280 KB Output is correct
3 Correct 10 ms 1280 KB Output is correct
4 Incorrect 4 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -