Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2018
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define f first
  3. #define s second
  4. #define mp make_pair
  5. #define pb push_back
  6. #define lp(i,a,n) for(int i=a;i<=n;++i)
  7. #define lpd(i,a,n) for(int i=a;i>=n;--i)
  8. #define mem(a,b) memset(a,b,sizeof a)
  9. #define all(v) v.begin(),v.end()
  10. #define println(a) cout <<(a) <<endl
  11. #define sz(x) ((int)(x).size())
  12. #define readi(x) scanf("%d",&x)
  13. #define read2i(x,y) scanf("%d%d",&x,&y)
  14. #define read3i(x,y,z) scanf("%d%d%d",&x,&y,&z)
  15. #define mod 1000000007
  16. #define eps 1e-8
  17. #define infi 1000000000
  18. #define infll 1000000000000000000ll
  19. using namespace std;
  20. typedef long long ll;
  21. typedef pair<int,int> pii;
  22. typedef pair<ll,ll> pll;
  23. typedef vector<int> vi;
  24. typedef vector<vi> vvi;
  25. typedef vector<ll> vll;
  26. typedef set<int> si;
  27. typedef map<int,int> mii;
  28.  
  29. const int N = 100002;
  30. int n,m;
  31. pii a[N],b[N];
  32.  
  33. int main(){
  34. read2i(n,m);
  35. lp(i,1,n) readi(a[i].f);
  36. lp(i,1,n) readi(a[i].s);
  37. lp(i,1,m) readi(b[i].f);
  38. lp(i,1,m) readi(b[i].s);
  39.  
  40. sort(a+1, a+1+n);
  41. sort(b+1, b+1+m);
  42.  
  43. double sqrt2 = sqrt(2);
  44. int ans = 0, j = 1;
  45. lp(i,1,n){
  46. while(j <= m and (2 * b[j].f <= a[i].f * sqrt2 or !b[j].s)) ++j;
  47. if(j <= m){
  48. int d = min(a[i].s, b[j].s);
  49. b[j].s -= d;
  50. a[i].s -= d;
  51. ans += d;
  52. if(a[i].s) --i;
  53. }
  54. }
  55. cout <<ans;
  56. }
  57.  
  58. /*
  59. freopen("input.txt","r",stdin);
  60. freopen("output.txt","w",stdout);
  61. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement