Submission #374766

#TimeUsernameProblemLanguageResultExecution timeMemory
374766AriaHStrange Device (APIO19_strange_device)C++11
100 / 100
611 ms53556 KiB
/** I can do this all day **/ #pragma GCC optimize("O2") #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> pii; typedef pair<ll,ll> pll; #define all(x) (x).begin(),(x).end() #define F first #define S second #define Mp make_pair #define SZ(x) (int)x.size() #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define file_io freopen("in.txt" , "r+" , stdin) ; freopen("out.txt" , "w+" , stdout); const int N = 1e6 + 10; const ll mod = 1e9 + 7; const ll mod2 = 998244353; const ll inf = 8e18; const int LOG = 22; const ld one = 1.; const ld eps = 1e-12; ll pw(ll a , ll b, ll M) { return (!b ? 1 : (b & 1 ? (a * pw(a * a % M, b / 2, M)) % M : pw(a * a % M, b / 2, M))); } int n; ll A, B, L; vector < pll > vec; int main() { scanf("%d%lld%lld", &n, &A, &B); L = A / __gcd(A, B + 1); /// A | t - t2 + (t - t2) / B -> A | (B + 1) * ((t - t2) / B) if(one * L * B - one * inf > eps) L = inf; else L *= B; for(int i = 1; i <= n; i ++) { ll l, r; scanf("%lld%lld", &l, &r); if(r - l > L) { return !printf("%lld", L); } r %= L, l %= L; if(l <= r) { vec.push_back(Mp(l, r)); } else { vec.push_back(Mp(l, L - 1)); vec.push_back(Mp(0, r)); } } sort(all(vec)); ll tot = 0, right = -1; for(auto cu : vec) { right = max(right, cu.F - 1); tot += max(0ll, cu.S - right); right = max(cu.S, right); } printf("%lld", tot); return 0; } /** test corner cases(n = 1?) watch for overflow or minus indices **/

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:37:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   37 |  scanf("%d%lld%lld", &n, &A, &B);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
strange_device.cpp:44:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   44 |   scanf("%lld%lld", &l, &r);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~
#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...