Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define pb push_back
- #define mp make_pair
- #define ll long long
- #define ld long double
- ll INF = 999999999999;
- ld EPS = 0.0000000001;
- #pragma GCC optimize("O3")
- #pragma G++ optimize("O3")
- #define ull unsigned long long
- #define ABS(x) ((x)<0?-(x):(x))
- #define finds(v,x) (v.find(x) != v.end())
- #define to18 << fixed << setprecision(18) <<
- #define DB(x) cout<<"\n"<<#x<<" = "<<(x)<<"\n";
- #pragma comment(linker, "/STACK:1024000000,1024000000")
- #define FastIO ios_base::sync_with_stdio(false); cin.tie(0)
- ll gcd(ll a, ll b) {
- if (a == 0)return b;if (b == 0)return a;if (a == 1 || b == 1)return 1;if (a == b)return a;
- if (a>b)return gcd(b, a%b);else return gcd(a, b%a);
- }ll pow(ll a, ll n) {
- ll*s = new ll[n];s[0] = a;for (ll i = 1;i<n;
- ++i) {
- s[i] = s[i - 1] * a;
- }return s[n - 1];
- }ll lcm(ll a, ll b) { ll temp = gcd(a, b);return temp ? (a / temp*b) : 0; }ll countNumbers(ll a)
- {
- ll c = 0;ll v = a;while (v) { v /= 10;c++; }return c;
- }bool isprime(ll a) { for (ll i = 2; i <= sqrt(a);++i) { if (a%i == 0) { return false; } }return true; }
- //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\/
- vector <ull> a;
- string s;
- ll n, x;
- ll q = 0;
- ll st = 1;
- ll ans = 0;
- ull cnt = 0;
- ull u;
- ull d;
- int main() {
- cin >> n >> x;
- for (ll i = 0; i < n; i++)
- {
- cin >> s;
- ll j = s.length() - 1;
- vector<int> vec;
- while (j >= 0)
- {
- q = 0;
- st = 1;
- ans = 0;
- while (j >= 0 && s[j] != '.')
- {
- q = s[j] - '0';
- ans += q * st;
- st *= 10;
- j--;
- }
- vec.push_back(ans);
- j--;
- }
- cnt = 0;
- st = 1;
- for (ll s1 = 0; s1 < vec.size(); s1++)
- {
- cnt += vec[s1] * st;
- st *= 256;
- }
- a.push_back(cnt);
- }
- u = 0;
- d = 0;
- cin >> s;
- ll j = s.length() - 1;
- vector<ll> vec;
- while (j >= 0)
- {
- q = 0;
- st = 1;
- ans = 0;
- while (j >= 0 && s[j] != '.')
- {
- q = s[j] - '0';
- ans += q * st;
- st *= 10;
- j--;
- }
- vec.push_back(ans);
- j--;
- }
- cnt = 0;
- st = 1;
- for (ll s1 = 0; s1 < vec.size(); s1++)
- {
- cnt += vec[s1] * st;
- st *= 256;
- }
- d = cnt;
- cin >> s;
- j = s.length() - 1;
- vec.resize(0);
- while (j >= 0)
- {
- q = 0;
- st = 1;
- ans = 0;
- while (j >= 0 && s[j] != '.')
- {
- q = s[j] - '0';
- ans += q * st;
- st *= 10;
- j--;
- }
- vec.push_back(ans);
- j--;
- }
- cnt = 0;
- st = 1;
- for (ll s1 = 0; s1 < vec.size(); s1++)
- {
- cnt += vec[s1] * st;
- st *= 256;
- }
- u = cnt;
- sort(a.begin(), a.end());
- ll l;
- ll r;
- j = 0;
- while (d > a[j])
- j++;
- l = j;
- j = a.size() - 1;
- while (u < a[j])
- j--;
- r = j;
- ll i = 0;
- if (a[l] - d < 2 && u - a[r] < 2)
- for (i = l + 1; i <= r; i++)
- {
- if (a[i] - a[i - 1] >= 3)
- break;
- }
- if (i <= r)
- {
- ans = (u - d + 1) - 2 - (r - l + 1);
- cout << ans << endl;
- return 0;
- }
- cout << -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement