fork download
  1. #include <bits/stdc++.h>
  2. typedef long long int ll;
  3. using namespace std;
  4.  
  5. class s {
  6. public:
  7. ll md(int p,vector<int>& d,vector<int>& h) {
  8. int n=d.size();
  9. vector<pair<double,int>> t(n);
  10.  
  11. for(int i=0;i<n;i++) {
  12. double k=ceil((double)h[i]/p);
  13. t[i]={k/d[i],i};
  14. }
  15.  
  16. sort(t.begin(),t.end());
  17.  
  18. ll td=0;
  19. ll cd=accumulate(d.begin(),d.end(),0ll);
  20.  
  21. for(int i=0;i<n;i++) {
  22. int idx=t[i].second;
  23. int k=ceil((double)h[idx]/p);
  24. td+=cd*k;
  25. cd-=d[idx];
  26. }
  27.  
  28. return td;
  29. }
  30. };
  31.  
  32. int main() {
  33. int p,n;
  34. cin>>p>>n;
  35. vector<int> d(n),h(n);
  36.  
  37. for(int i=0;i<n;i++) cin>>d[i];
  38. for(int i=0;i<n;i++) cin>>h[i];
  39.  
  40. s sol;
  41. cout<<sol.md(p,d,h)<<endl;
  42. return 0;
  43. }
  44.  
Success #stdin #stdout 0.01s 5256KB
stdin
4 4
1 2 3 4
4 5 6 8
stdout
39