#include #include "testlib.h" void solve() { int n = inf.readInt(1, 500000); inf.readEoln(); const int m = 1000010; std::vector cnt(2 * m + 1, 0); for (int i = 0; i < n; i++) { int a = inf.readInt(1, 1000000); inf.readSpace(); int b = inf.readInt(1, 1000000); inf.readEoln(); cnt[a + m]--; cnt[b + m]++; cnt[b - a - 1 + m]--; } std::vector cum(2 * m + 1, 0); for (int i = 1; i <= 2 * m; i++) { cum[i] = cum[i - 1] + cnt[i]; } int min_ = n + 1; int idx = -1; for (int i = 1; i < m; i++) { int ge = 0; for (int t = 0; t * i < m; t++) { int l = t * i; int r = std::min(m, l + i); ge += (cum[r - 1 + m] - cum[l - 1 + m]) * t; } for (int t = 0; t * i > -m; t--) { int r = t * i; int l = std::max(-m + 1, r - i); ge += (cum[r - 1 + m] - cum[l - 1 + m]) * (t - 1); } if (ge < min_) { min_ = ge; idx = i; } } std::cout << idx << std::endl; } int main(int argc, char *argv[]) { std::cin.tie(0)->sync_with_stdio(0); registerValidation(argc, argv); solve(); inf.readEof(); }