Submission #513590

#TimeUsernameProblemLanguageResultExecution timeMemory
513590amukkalirStrange Device (APIO19_strange_device)C++17
5 / 100
1112 ms70432 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define pii pair<int,int> #define pll pair<ll, ll> #define fi first #define se second #define pb push_back #define mp make_pair int n, a, b; ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a%b); } signed main () { scanf("%d %d %d", &n, &a, &b); vector<pll> v; for(int i=0; i<n; i++) { ll l, r; scanf("%lld %lld", &l, &r); v.pb(mp(l,r)); } ll ans = 0; //if r max < a*b / gcd(a, b+1) if(v.back().se / b < a / gcd(a, b+1)) { for(int i=0; i<n; i++) { ans += v[i].se - v[i].fi + 1; } } else { ll c = a/gcd(a, b+1) * b; for(int i=0; i<n; i++) { if(v[i].se % c < v[i].fi % c || v[i].se >= v[i].fi + c) { v.pb(mp(0, v[i].se % c)); v[i].se = c-1; } v[i].fi %= c; v[i].se %= c; } sort(v.begin(), v.end(), [&] (pll a, pll b) { if(a.fi % c == b.fi % c) return a.se % c < b.se % c; return a.fi % c < b.fi % c; }); //for(auto p : v) cout << p.fi << " " << p.se << endl; for(int i=0; i<v.size(); i++) { int l = i, r = i; while(r + 1 < v.size() && v[r+1].fi <= v[r].se) r++; //cout << " :: " << l << " " << r << endl; ans += v[r].se - v[l].fi + 1; i = r; } } printf("%lld", ans); }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:52:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |         for(int i=0; i<v.size(); i++) {
      |                      ~^~~~~~~~~
strange_device.cpp:54:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |             while(r + 1 < v.size() && v[r+1].fi <= v[r].se)  r++;
      |                   ~~~~~~^~~~~~~~~~
strange_device.cpp:17:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |     scanf("%d %d %d", &n, &a, &b);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
strange_device.cpp:21:23: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         ll l, r; 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...