fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long int
  4. #define pb emplace_back
  5. #define mp make_pair
  6. #define fi first
  7. #define se second
  8. #define all(v) v.begin(), v.end()
  9.  
  10. signed main()
  11. {
  12.  
  13. int n, i,j,ans=0,ok=0;
  14.  
  15. cin >> n;
  16.  
  17. vector<int> a(n, 0), b(n, 0);
  18.  
  19. for (i = 0; i < n; i++)
  20. cin >> a[i];
  21. for (i = 0; i < n; i++)
  22. cin >> b[i];
  23.  
  24. vector<pair<int, int>> v;
  25. for (i = 0; i < n; i++)
  26. {
  27. v.pb(mp(i + 1 + b[i], -a[i]));
  28. v.pb(mp(i + 1, a[i]));
  29. }
  30.  
  31. sort(all(v));
  32. n = v.size();
  33. v.pb(mp(0, 0));
  34.  
  35. i = 0;
  36. int res = 0;
  37.  
  38. while (1)
  39. {
  40. if (i > n)
  41. break;
  42. ok = 0;
  43. for (j = i; j <= n; j++)
  44. {
  45. if (v[i].fi == v[j].fi)
  46. ans += v[j].se;
  47. else
  48. {
  49. i = j;
  50. ok = 1;
  51. break;
  52. }
  53. }
  54.  
  55.  
  56. if (ok == 0)
  57. break;
  58.  
  59. res = max(res, ans);
  60. }
  61.  
  62. cout << res << endl;
  63. }
Success #stdin #stdout 0s 5672KB
stdin
4
3 1 0 2
2 4 0 8
stdout
4