Submission #140579

#TimeUsernameProblemLanguageResultExecution timeMemory
140579luciocfStrange Device (APIO19_strange_device)C++14
20 / 100
5050 ms524292 KiB
#include <bits/stdc++.h> #define ff first #define ss second using namespace std; typedef long long ll; typedef pair<ll, ll> pii; int n; ll A, B; void solve_1(void) { ll l, r; scanf("%lld %lld", &l, &r); ll x = (r-l+1)/B; ll g = A/__gcd(B+1, A); if (x >= g) printf("%lld\n", B*g); else printf("%lld\n", r-l+1); } void solve_2(void) { set<ll> st; for (int i = 1; i <= n; i++) { ll l, r; scanf("%lld %lld", &l, &r); for (ll j = l; j <= r; j++) st.insert(j); } map<pair<ll, ll>, int> mp; int ans = 0; for (auto t: st) { ll x = (t + t/B)%A; ll y = t%B; if (!mp[{x, y}]) ans++; mp[{x, y}] = 1; } printf("%d\n", ans); } void solve_4(void) { vector<pii> V; if (A%2 == 0) A /= 2ll; bool ok = 0; for (int i = 1; i <= n; i++) { ll l, r; scanf("%lld %lld", &l, &r); if (r-l+1 >= A) { ok = 1; } else { if (l%A <= r%A) { V.push_back({l%A, r%A}); } else { V.push_back({l%A, A-1}); V.push_back({0, r%A}); } } } if (ok) { printf("%lld\n", A); return; } sort(V.begin(), V.end()); ll ans = V[0].ss-V[0].ff+1, last = V[0].ss; for (int i = 1; i < V.size(); i++) { ll l = V[i].ff, r = V[i].ss; if (l > last) { ans += r-l+1; last = r; } else { if (r > last) { ans += r-last; last = r; } } } printf("%lld\n", ans); } int main(void) { scanf("%d %lld %lld", &n, &A, &B); if (n == 1) { solve_1(); return 0; } if (B == 1) { solve_4(); return 0; } solve_2(); }

Compilation message (stderr)

strange_device.cpp: In function 'void solve_4()':
strange_device.cpp:98:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 1; i < V.size(); i++)
                  ~~^~~~~~~~~~
strange_device.cpp: In function 'void solve_1()':
strange_device.cpp:17:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld %lld", &l, &r);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~
strange_device.cpp: In function 'void solve_2()':
strange_device.cpp:34:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld %lld", &l, &r);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~
strange_device.cpp: In function 'void solve_4()':
strange_device.cpp:68:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld %lld", &l, &r);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~
strange_device.cpp: In function 'int main()':
strange_device.cpp:122:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %lld %lld", &n, &A, &B);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...