Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. #define ull unsigned long long
  9. #define p_b push_back
  10.  
  11. vector<ull> all;
  12.  
  13. ull to_int(string &s) {
  14. ull ans = 0;
  15. for (int i = 0; i < s.size(); i++) {
  16. ans = ans * 10 + (s[i] - '0');
  17. }
  18. return ans;
  19. }
  20.  
  21. ull ip_to_int(string &s) {
  22. string l = "";
  23. ull ans = 0;
  24. for (int i = 0; i < s.size(); i++) {
  25. if (s[i] != '.')
  26. l += s[i];
  27. else {
  28. ans = ans * 256 + to_int(l);
  29. l = "";
  30. }
  31. }
  32. ans = ans * 256 + to_int(l);
  33. return ans;
  34. }
  35.  
  36. int main()
  37. {
  38. cin.tie(0);
  39. cout.tie(0);
  40. ios_base::sync_with_stdio(0);
  41. int n, x;
  42. cin >> n >> x;
  43. string s;
  44. for (int i = 0; i < n; i++) {
  45. cin >> s;
  46. all.p_b(ip_to_int(s));
  47. }
  48. cin >> s;
  49. ull a = ip_to_int(s);
  50. cin >> s;
  51. ull b = ip_to_int(s);
  52. ull in_deap = 0;
  53. bool a_in = 0, b_in = 0;
  54. for (int i = 0; i < all.size(); i++) {
  55. if (all[i] > a && all[i] < b)
  56. in_deap++;
  57. if (a == all[i])
  58. a_in = 1;
  59. if (b == all[i])
  60. b_in = 1;
  61. }
  62. if (!a_in)
  63. all.p_b(a);
  64. if (!b_in)
  65. all.p_b(b);
  66. sort(all.begin(), all.end());
  67. ull res = -1;
  68. for (int i = 0; i < all.size() - 1; i++) {
  69. if (all[i] >= a && all[i + 1] <= b && all[i + 1] - all[i] >= 2) {
  70. if (all[i] == a && !a_in) {
  71. if (res == -1)
  72. res = b - a - b_in;
  73. else
  74. res = min(b - a - b_in , res);
  75. }
  76. if (all[i + 1] == b && !b_in) {
  77. if (res == -1)
  78. res = b - a - a_in;
  79. else
  80. res = min(b - a - a_in, res);
  81. }
  82. }
  83. if (all[i + 1] - all[i] >= 3 && all[i] > a && all[i + 1] < b) {
  84. if (res == -1)
  85. res = b - a - a_in - b_in;
  86. else
  87. res = min(b - a - a_in - b_in, res);
  88. }
  89. }
  90. if (a + 1 == b && !a_in && !b_in) {
  91. cout << 0;
  92. return 0;
  93. }
  94. if (res != -1)
  95. cout << res - in_deap - 1;
  96. else
  97. cout << -1 << endl;
  98. return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement