Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstring>
  4. #include <vector>
  5. #include <map>
  6.  
  7. using namespace std;
  8.  
  9. int n, ms, res;
  10. map<int, bool> g[3000];
  11. map<int, bool> og[3000];
  12. bool vis[3000];
  13. bool dn[3000];
  14.  
  15. int gg(int cs)
  16. {
  17. for (int i = 0; i < n; i++)
  18. {
  19. g[i].clear();
  20. copy(og[i].begin(), og[i].end(), g[i].begin());
  21. dn[i] = false;
  22. }
  23.  
  24. int rc = 0;
  25. bool nr = false;
  26. while (!nr)
  27. {
  28. nr = true;
  29. for (int i = 0; i < n; i++)
  30. {
  31. if (g[i].size() >= cs || dn[i])
  32. continue;
  33.  
  34. dn[i] = true;
  35. rc++;
  36.  
  37. for (map<int, bool>::iterator j = g[i].begin(); j != g[i].end(); j++)
  38. {
  39. cout << j->first;
  40. // g[j->first].erase(i);
  41. }
  42. }
  43. }
  44.  
  45. return rc;
  46. }
  47.  
  48. void bs(int s, int e)
  49. {
  50. if (s > e)
  51. return;
  52.  
  53. int mid = (s + e) / 2;
  54. int rc = gg(mid);
  55.  
  56. if (rc < n)
  57. bs(s, mid - 1);
  58. else
  59. {
  60. ms = mid;
  61. bs(mid + 1, e);
  62. }
  63. }
  64.  
  65. int maximum_deevs(vector<int> v)
  66. {
  67. n = v.size();
  68. res = 0;
  69. for (int i = 0; i < n; i++)
  70. g[i].clear();
  71. memset(vis, 0, sizeof(vis));
  72.  
  73. int cm;
  74. for (int i = 0; i < n; i++)
  75. {
  76. cm = 0;
  77. for (int j = i + 1; j < n; j++)
  78. {
  79. if (v[j] >= cm)
  80. {
  81. og[i][j] = true;
  82. og[j][i] = true;
  83. cm = v[j];
  84. }
  85. }
  86. }
  87.  
  88. ms = 0;
  89. bs(0, n - 1);
  90.  
  91. return res;
  92. }
  93.  
  94. int main()
  95. {
  96. ifstream cin("in.txt");
  97.  
  98. int n, curr;
  99.  
  100. cin >> n;
  101.  
  102. vector<int> iv;
  103. for (int i = 0; i < n; i++)
  104. {
  105. cin >> curr;
  106. iv.push_back(curr);
  107. }
  108.  
  109. cout << maximum_deevs(iv);
  110.  
  111. return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement