Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. ifstream f ("forcoding.in");
  7. ofstream g ("forcoding.out");
  8.  
  9. int n;
  10. long long maxim;
  11.  
  12. struct element {
  13. int st, dr, val, poz;
  14. } v[10001], sol[10001];
  15.  
  16. void read ()
  17. {
  18. int i, x;
  19. f >> n;
  20. for (i=1; i<=n; i++)
  21. {
  22. f >> x;
  23. v[i].val = x;
  24. v[i].poz = i;
  25. }
  26. for (i=1; i<=n; i++)
  27. {
  28. f >> x;
  29. v[i].st = x;
  30. }
  31. for (i=1; i<=n; i++)
  32. {
  33. f >> x;
  34. v[i].dr = x;
  35. }
  36. }
  37.  
  38. bool ok (int pozitie)
  39. {
  40. int i, j;
  41. if (sol[1].poz == sol[2].poz)
  42. return false;
  43. for (i=1; i<pozitie; i++)
  44. for (j=i+1; j<=pozitie; j++)
  45. {
  46. if (sol[i].poz == sol[j].poz)
  47. return false;
  48. if (sol[i].poz + sol[i].dr >= sol[j].poz - sol[j].st)
  49. return false;
  50. }
  51. return true;
  52. }
  53.  
  54. void afisare (int nr)
  55. {
  56. int i;
  57. long long suma = 0;
  58. for (i=1; i<=nr; i++)
  59. suma += sol[i].val;
  60. if (suma > maxim)
  61. maxim = suma;
  62. }
  63.  
  64. void bkt (int k, int nr)
  65. {
  66. for (int i=1; i<=n; i++)
  67. {
  68. sol[k].val = v[i].val;
  69. sol[k].st = v[i].st;
  70. sol[k].dr = v[i].dr;
  71. sol[k].poz = v[i].poz;
  72. if (ok(k))
  73. {
  74. if (k == nr)
  75. afisare(nr);
  76. else
  77. bkt(k+1, nr);
  78. }
  79. }
  80. }
  81.  
  82. int main()
  83. {
  84. read();
  85. for (int j=1; j<=n; j++)
  86. bkt(1, j);
  87. g << maxim;
  88. return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement