Submission #984786

#TimeUsernameProblemLanguageResultExecution timeMemory
984786TsaganaStrange Device (APIO19_strange_device)C++14
100 / 100
383 ms71772 KiB
#include<bits/stdc++.h> #define IOS ios_base::sync_with_stdio(false);cin.tie();cout.tie(); #define all(x) x.begin(), x.end() #define int long long #define pi pair<int, int > #define pq priority_queue #define lb lower_bound #define ub upper_bound #define pb push_back #define eb emplace_back #define mset multiset #define F first #define S second using namespace std; const int INF = 1e18; int n, A, B, s; int l[1000001]; int r[1000001]; int gcd(int a, int b) {return (a == 0 ? b : gcd(b % a, a));} void solve () { cin >> n >> A >> B; for(int i = 0; i < n; i++){ cin >> l[i] >> r[i]; s += r[i] - l[i] + 1; } map<int, int> cnt; if (INF / A < (B + 1) / gcd(B + 1, A)) {return void(cout << s);} int cyc = A / gcd(A, B + 1) * B; vector<pair<int, int>> range; for (int i = 0; i < n; i++) { if (r[i] - l[i] + 1 >= cyc) {return void(cout << cyc);} if ((l[i] %= cyc) <= (r[i] %= cyc)) {range.pb({l[i], r[i]});} else {range.pb({l[i], cyc - 1}); range.pb({0, r[i]});} } sort(all(range)); int ans = range[0].S - range[0].F + 1, pre = range[0].S; for (int i = 1; i < range.size(); i++) { if (range[i].S > pre) { ans += range[i].S - max(range[i].F, pre + 1) + 1; pre = range[i].S; } } cout << ans; } signed main(){IOS solve(); return 0;}

Compilation message (stderr)

strange_device.cpp: In function 'void solve()':
strange_device.cpp:41:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |  for (int i = 1; i < range.size(); i++) {
      |                  ~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...