Na2a

Untitled

Feb 2nd, 2017
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. #include <map>
  2. #include <set>
  3. #include <list>
  4. #include <cmath>
  5. #include <ctime>
  6. #include <deque>
  7. #include <queue>
  8. #include <stack>
  9. #include <string>
  10. #include <bitset>
  11. #include <cstdio>
  12. #include <limits>
  13. #include <vector>
  14. #include <climits>
  15. #include <cstring>
  16. #include <cstdlib>
  17. #include <fstream>
  18. #include <numeric>
  19. #include <sstream>
  20. #include <cassert>
  21. #include <iomanip>
  22. #include <iostream>
  23. #include <algorithm>
  24. //#include <unordered_set>
  25. //#include <unordered_map>
  26.  
  27. #define pii pair<int, int>
  28.  
  29. #define pb push_back
  30. #define mp make_pair
  31.  
  32. #define f first
  33. #define s second
  34.  
  35. using namespace std;
  36.  
  37.  
  38. typedef long double ld;
  39. typedef long long ll;
  40.  
  41.  
  42. const ld PI = acos(-1);
  43. const ld EPS = 1e-6;
  44.  
  45. const int MOD = (int) 1e9 + 7;
  46. const int N = (int) 2e5 + 7;
  47.  
  48. const int dx[] = {-1, 0, 1, 0};
  49. const int dy[] = {0, -1, 0, 1};
  50.  
  51. int mod, n;
  52. int a[N];
  53. int b[N];
  54. map<int, int> used;
  55.  
  56. int main() {
  57. #ifdef LOCAL
  58. freopen("in.txt", "r", stdin);
  59. //freopen("out.txt", "w", stdout);
  60. #endif
  61.  
  62. scanf("%d%d", &mod, &n);
  63. int sum = 0;
  64. for (int i = 1; i <= n; i++) {
  65. scanf("%d", &a[i]);
  66. sum = (sum + a[i]) % mod;
  67. used[a[i]] = 1;
  68. }
  69. sort(a + 1, a + n + 1);
  70. if (n == 1) {
  71. cout << a[1] << ' ' << 0;
  72. return 0;
  73. }
  74. for (int i = 2; i <= n; i++) {
  75. int d = (a[i] - a[1] + mod) % mod;
  76. int len = 1;
  77. int cur = a[1];
  78. int x;
  79. for (x = (cur + d) % mod; len <= n && used[x]; x = (x + d) % mod) len++;
  80. for (x = (cur - d + mod) % mod; len <= n && used[x]; x = (x - d + mod) % mod) len++;
  81. if (len >= n) {
  82. cout << (x + d) % mod << ' ' << d;
  83. return 0;
  84. }
  85. }
  86. swap(a[1], a[2]);
  87. for (int i = 2; i <= n; i++) {
  88. int d = (a[i] - a[1] + mod) % mod;
  89. int len = 1;
  90. int cur = a[1];
  91. int x;
  92. for (x = (cur + d) % mod; len <= n && used[x]; x = (x + d) % mod) len++;
  93. for (x = (cur - d + mod) % mod; len <= n && used[x]; x = (x - d + mod) % mod) len++;
  94. if (len >= n) {
  95. cout << (x + d) % mod << ' ' << d;
  96. return 0;
  97. }
  98. }
  99. cout << -1;
  100. return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment