Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma GCC optimize("Ofast,unroll-loops")
- #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,mmx,avx,avx2")
- //think twice code once
- //when its getting hard remember why you started
- # include <bits/stdc++.h>
- #include<ext/pb_ds/assoc_container.hpp>
- #include<ext/pb_ds/tree_policy.hpp>
- using namespace std;
- using namespace __gnu_pbds;
- typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
- // find_by_order->iterator to that index, order_of_key->returns no of elements smaller than the key;
- #ifdef Mayank
- #include "bug.h"
- #else
- #define bug(...)
- #endif
- typedef long long ll;
- typedef unsigned long long ull;
- typedef long double ld;
- typedef pair<int, int> pi;
- typedef pair<ll, ll> pl;
- typedef vector<int> vi;
- typedef vector<ld> vd;
- typedef vector<ll> vl;
- typedef vector<pi> vpi;//typedef for datatype and #define for macro
- typedef vector<pl> vpl;
- # define fast ios_base::sync_with_stdio(false);cin.tie(NULL);
- # define MOD 1000000007
- # define endl '\n'
- # define FOR(i, a, b) for (int i=a; i<(b); i++)
- # define F0R(i, a) for (int i=0; i<(a); i++)
- # define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
- # define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
- # define INF 9e18
- # define PI 3.14159265358979323846
- # define lb lower_bound
- # define ub upper_bound
- # define mp make_pair
- # define pb push_back
- # define fi first
- # define se second
- # define all(a) a.begin(), a.end()
- # define iceil(n, x) (((n) + (x) - 1) / (x))
- ll mod_add(ll a, ll b, ll m) {a = a % m; b = b % m; return (((a + b) % m) + m) % m;}
- ll mod_mul(ll a, ll b, ll m) {a = a % m; b = b % m; return (((a * b) % m) + m) % m;}
- ll mod_sub(ll a, ll b, ll m) {a = a % m; b = b % m; return (((a - b) % m) + m) % m;}
- mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
- ll lcm(ll a, ll b)
- {
- return ((a * b) / __gcd(a, b));
- }
- // int main()
- // {
- // fast;
- // ll t;
- // cin >> t;
- // while (t--)
- // {
- // ll n; cin >> n;
- // vl v(n); for (ll i = 0; i < n; i++) cin >> v[i];
- // ll maxsum = 0;
- // ll i = 0;
- // while (i < n) {
- // if (v[i] > 0) {//+ve chunks
- // ll temp = INT_MIN;
- // while (i < n && v[i] > 0) {
- // temp = max(temp, v[i]);
- // i++;
- // }
- // maxsum += temp; continue;
- // }
- // if (v[i] < 0) {
- // ll temp = INT_MIN;
- // while (i < n && v[i] < 0) {
- // temp = max(temp, v[i]);
- // i++;
- // }
- // maxsum += temp; continue;
- // }
- // }
- // cout << maxsum << endl;
- // }
- // return 0;
- // }
- int main() {
- fast;
- ll n; cin >> n;
- vl a(n); for (ll i = 0; i < n; i++) cin >> v[i];
- ll m; cin >> m;
- vl b(m); for (ll i = 0; i < m; i++) cin >> b[i];
- sort(all(a)); sort(all(b));
- int i = 0, j = 0, countans = 0;
- while (i < n && j < m) {
- if (abs(a[i] - b[j]) <= 1) {
- countans++; i++; j++;
- }
- else if (a[i] < b[j]) {
- i++;
- }
- else j++;
- }
- cout << countans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement