이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define int long long
using namespace std;
ostream& operator<<(ostream& out, __int128_t x){
string s; while(x) s.push_back(x % 10 + '0'), x /= 10;
reverse(s.begin(), s.end()); return out << s;
}
int32_t main(){
int N,A,B; cin >> N >> A >> B;
__int128_t C = (__int128_t)B*(A/__gcd(A,B+1));
vector<pair<__int128_t, __int128_t>> ranges;
for(int i = 0;i<N;++i){
int l,r; cin >> l >> r;
if(r-l+1 >= C){
cout << C << "\n";
return 0;
}
if(l/C == r/C){
ranges.push_back({l%C,1});
ranges.push_back({r%C + 1,-1});
}
else{
ranges.push_back({l%C,1});
ranges.push_back({0,1});
ranges.push_back({r%C+1,-1});
}
}
ranges.push_back({C, 0});
sort(ranges.begin(),ranges.end());
int cnt = 0, ans = 0;
for(int i = 0;i<ranges.size()-1;++i){
cnt += ranges[i].second;
if(cnt > 0){
ans += ranges[i+1].first-ranges[i].first;
}
}
cout << ans << "\n";
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
strange_device.cpp: In function 'int32_t main()':
strange_device.cpp:33:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<__int128, __int128> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
33 | for(int i = 0;i<ranges.size()-1;++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... |