Submission #346910

#TimeUsernameProblemLanguageResultExecution timeMemory
346910blueStrange Device (APIO19_strange_device)C++11
65 / 100
1804 ms17388 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 * B / long_gcd(A, B+1); // cout << period << '\n'; long long l, r; vector<long long> endpoints; for(int i = 1; i <= n; i++) { cin >> l >> r; 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); } } // 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'; }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:78:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |     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...