#include #include "optimization.h" #include using namespace std; #define N 100001 int n; unordered_map am; int as[2 * N]; int a = 43215, b = 54321; unsigned int cur = 0; inline unsigned int nextRand24() { cur = cur * a + b; return cur >> 8u; } int check(int a0, int d) { if(d == 0) return INT_MAX; int count = 1; int base = a0; int ax = a0 - d; while(am[ax]) { count++; base = ax; ax -= d; } ax = a0 + d; while(am[ax]) { count++; ax += d; } return count >= n ? base : INT_MAX; } int main() { n = readInt(); int size = 2 * n; int maxCount = 0; int maxCountElem = -1; for (int i = 0; i < size; ++i) { int x = readInt(); as[i] = x; int count = ++am[x]; if(count > maxCount) { maxCount = count; maxCountElem = x; } } if(maxCount > n) { writeInt(maxCountElem, ' '); writeInt(0, '\n'); } else { int base, d; do { int a1 = as[nextRand24() % size]; int a2 = as[nextRand24() % size]; if(a1 > a2) swap(a1, a2); base = check(a1, d = a2 - a1); } while(base == INT_MAX); writeInt(base, ' '); writeInt(d, '\n'); } return 0; }