제출 #346926

#제출 시각아이디문제언어결과실행 시간메모리
346926blue이상한 기계 (APIO19_strange_device)C++17
100 / 100
1815 ms26320 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; long long long_gcd(long long a, long long b) { // cout << "gcd " << a << ' ' << b << '\n'; if(a < b) swap(a, b); if(b == 0) return a; return long_gcd(a%b, b); } long long long_abs(long long x) { if(x >= 0) return x; return -x; } long long long_sign(long long x) { if(x > 0) return 1; return -1; } int main() { int n; long long A, B; cin >> n >> A >> B; long long period = A / long_gcd(A, B+1); if (period > 2e18 / B) { // period * B > 2e18 period = 1'000'000'000'000'000'000LL; } else { period *= B; } // cout << period << '\n'; long long l, r; long long maxSize = 0; vector<long long> endpoints; for(int i = 1; i <= n; i++) { cin >> l >> r; maxSize = max(maxSize, r-l+1); if(l % period <= r % period) { endpoints.push_back(l % period + 1); endpoints.push_back(-(r % period) - 1 - 1); } else { endpoints.push_back(l % period + 1); endpoints.push_back(-period - 1); endpoints.push_back(0 + 1); endpoints.push_back(-(r % period) - 1 - 1); } } if(maxSize >= period) { cout << period << '\n'; return 0; } // for(long long e: endpoints) cout << e << ' '; // cout << '\n'; sort(endpoints.begin(), endpoints.end(), [] (long long p, long long q) { return long_abs(p) < long_abs(q); }); // for(long long e: endpoints) cout << e << ' '; // cout << '\n'; long long res = 0; long long count = 0; count += long_sign(endpoints[0]); for(int i = 1; i < endpoints.size(); i++) { // cout << count << ' ' << long_abs(endpoints[i]) - long_abs(endpoints[i-1]) << '\n'; if(count > 0) res += long_abs(endpoints[i]) - long_abs(endpoints[i-1]); count += long_sign(endpoints[i]); } cout << res << '\n'; }

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

strange_device.cpp: In function 'int main()':
strange_device.cpp:94:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   94 |     for(int i = 1; i < endpoints.size(); i++)
      |                    ~~^~~~~~~~~~~~~~~~~~
#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...