Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define f first
- #define s second
- #define mp make_pair
- #define pb push_back
- #define lp(i,a,n) for(int i=a;i<=n;++i)
- #define lpd(i,a,n) for(int i=a;i>=n;--i)
- #define mem(a,b) memset(a,b,sizeof a)
- #define all(v) v.begin(),v.end()
- #define println(a) cout <<(a) <<endl
- #define sz(x) ((int)(x).size())
- #define readi(x) scanf("%d",&x)
- #define read2i(x,y) scanf("%d%d",&x,&y)
- #define read3i(x,y,z) scanf("%d%d%d",&x,&y,&z)
- #define mod 1000000007
- #define eps 1e-8
- #define infi 1000000000
- #define infll 1000000000000000000ll
- using namespace std;
- typedef long long ll;
- typedef pair<int,int> pii;
- typedef pair<ll,ll> pll;
- typedef vector<int> vi;
- typedef vector<vi> vvi;
- typedef vector<ll> vll;
- typedef set<int> si;
- typedef map<int,int> mii;
- const int N = 100002;
- int n,m;
- pii a[N],b[N];
- int main(){
- read2i(n,m);
- lp(i,1,n) readi(a[i].f);
- lp(i,1,n) readi(a[i].s);
- lp(i,1,m) readi(b[i].f);
- lp(i,1,m) readi(b[i].s);
- sort(a+1, a+1+n);
- sort(b+1, b+1+m);
- double sqrt2 = sqrt(2);
- int ans = 0, j = 1;
- lp(i,1,n){
- while(j <= m and (2 * b[j].f <= a[i].f * sqrt2 or !b[j].s)) ++j;
- if(j <= m){
- int d = min(a[i].s, b[j].s);
- b[j].s -= d;
- a[i].s -= d;
- ans += d;
- if(a[i].s) --i;
- }
- }
- cout <<ans;
- }
- /*
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement