이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define st first
#define nd second
using namespace std;
using ll = long long;
int n; ll a, b, v, m;
vector< pair< ll, ll > > ilo;
ll gcd(const ll a, const ll b)
{
return (b == 0? a : gcd(b, a % b));
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> a >> b;
v = gcd(a, b + 1);
__int128 q = a / v * b;
if (q >= (ll)(1e18) + 1) m = (ll)(1e18) + 1;
else m = q;
//cerr << "m: " << m << '\n';
for (int i = 0; i < n; ++i)
{
ll l, r; cin >> l >> r;
if (r - l + 1 >= m)
return cout << m << '\n', 0;
r %= m; l %= m;
if (l > r)
ilo.push_back({l, m - 1}), ilo.push_back({0, r});
else
ilo.push_back({l, r});
}
sort(begin(ilo), end(ilo));
//for (int i = 0; i < ilo.size(); ++i)
//cerr << ilo[i].st << ' ' << ilo[i].nd << '\n';
ll c = 0, p = -1;
for (int i = 0; i < ilo.size(); ++i)
{
//cerr << p << ' ' << ilo[i].st << ' ' << ilo[i].nd << ' ';
c += (max(0ll, ilo[i].nd - max(ilo[i].st - 1, p))), p = max(p, ilo[i].nd);
//cerr << c << '\n';
}
cout << c << '\n';
}
컴파일 시 표준 에러 (stderr) 메시지
strange_device.cpp: In function 'int main()':
strange_device.cpp:47:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < ilo.size(); ++i)
~~^~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |