Advertisement
Dennnhhhickk

Untitled

Apr 23rd, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef long long ll;
  5. struct tt{
  6. int pos, data;
  7. };
  8. tt a[500][500];
  9. vector <ll> temp2;
  10. ll mx(int ii, int jj){
  11. ll ans = 0;
  12. for (int j = jj; j < temp2.size(); j++)
  13. ans += temp2[j] / (1 + j - jj);
  14. return ans;
  15. }
  16.  
  17. int main()
  18. {
  19. int n, l, k;
  20. cin >> l >> n >> k;
  21. vector <ll> temp, dp, temp1, dp1;
  22. vector <vector <ll> > c(n);
  23. for (int i = 0; i < n; i++)
  24. for (int j = 0; j < 4; j++)
  25. cin >> a[i][j].pos >> a[i][j].data;
  26.  
  27. for (int i = 0; i < l; i++)
  28. temp1.push_back(0);
  29.  
  30. for (int i = 0; i < n; i++){
  31. temp2 = temp1;
  32. for (int j = 0; j < 4; j++)
  33. temp2[a[i][j].pos - 1] += a[i][j].data;
  34. for (int j = 0; j < temp2.size(); j++)
  35. c[i].push_back(mx(i, j));
  36. }
  37. dp = temp1;
  38.  
  39. for (int ii = 0; ii < n; ii++){
  40. dp1 = temp1;
  41. for (int i = 0; i < l; i++)
  42. for (int j = max(0, i - k); j <= min(l - 1, i + k); j++)
  43. dp1[j] = max(dp1[j], dp[i] + c[ii][j]);
  44. dp = dp1;
  45. }
  46.  
  47. ll mxx = 0;
  48. for (ll i = 0; i < dp.size(); i++)
  49. mxx = max(mxx, dp[i]);
  50.  
  51. cout << mxx << endl;
  52. return 0;
  53. }
  54.  
  55. /*
  56. 9 1 9
  57. 2 6000 2 6000 2 6000 2 6000
  58.  
  59. 9 7 9
  60. 2 6000 2 6000 2 6000 2 6000
  61. 2 6000 2 6000 2 6000 2 6000
  62. 2 6000 2 6000 2 6000 2 6000
  63. 2 6000 2 6000 2 6000 2 6000
  64. 2 6000 2 6000 2 6000 2 6000
  65. 2 6000 2 6000 2 6000 2 6000
  66. 2 6000 2 6000 2 6000 2 6000
  67. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement