제출 #255084

#제출 시각아이디문제언어결과실행 시간메모리
255084BamiTorabi이상한 기계 (APIO19_strange_device)C++14
100 / 100
553 ms36600 KiB
//Sasayego! Sasayego! Shinzou wo Sasageyo! #include <iostream> #include <iomanip> #include <algorithm> #include <cmath> #include <ctime> #include <cstring> #include <vector> #include <set> #include <map> #include <stack> #include <queue> #include <deque> #include <numeric> #include <bitset> #include <ctime> #define debug(x) cerr << #x << " = " << x << endl #define lid (id << 1) #define rid (lid ^ 1) using namespace std; typedef long long ll; typedef long double ld; typedef pair <ll, ll> pll; typedef pair <int, int> pii; const int maxN = 2e6 + 5; const ll INF = 1e18; const ll MOD = 1e9 + 7; int cnt = 0, len = 0; pll P[maxN], Q[maxN]; ll gcd(ll a, ll b){ return (b == 0 ? a : gcd(b, a % b)); } pll I(pll X, pll Y){ pll Z; Z.first = max(X.first, Y.first); Z.second = min(X.second, Y.second); if (Z.first > Z.second) Z = {-1, -1}; return Z; } pll U(pll X, pll Y){ pll Z; Z.first = min(X.first, Y.first); Z.second = max(X.second, Y.second); return Z; } int main(){ time_t START = clock(); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; ll A, B; scanf("%d%lld%lld", &n, &A, &B); ll g = gcd(A, B + 1); ll L = (B / g <= INF / A ? A * B / g : INF); while (n--){ ll l, r; scanf("%lld%lld", &l, &r); if (L <= (r - l + 1)) return printf("%lld\n", L), 0; if (l >= L) l %= L; if (r >= L) r %= L; if (r >= l) P[cnt++] = {l, r}; else{ P[cnt++] = {l, L - 1}; P[cnt++] = {0, r}; } } sort(P, P + cnt); Q[0] = P[0]; for (int i = 1; i < cnt; i++){ if (I(Q[len], P[i]).first == -1) Q[++len] = P[i]; else Q[len] = U(Q[len], P[i]); } ll ans = len + 1; for (int i = 0; i <= len; i++) ans += Q[i].second - Q[i].first; printf("%lld\n", ans); time_t FINISH = clock(); cerr << "Execution time: " << (ld)(FINISH - START) / CLOCKS_PER_SEC * 1000.0 << " milliseconds.\n"; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

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