Advertisement
Guest User

STASYAMBA BOG NO WA 4

a guest
Nov 29th, 2015
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.32 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #pragma comment(linker, "/STACK:66777216")
  3. #include <iostream>
  4. #include <cstdio>
  5. #include <cmath>
  6. #include <vector>
  7. #include <ctime>
  8. #include <map>
  9. #include <set>
  10. #include <string>
  11. #include <queue>
  12. #include <deque>
  13. #include <cassert>
  14. #include <cstdlib>
  15. #include <bitset>
  16. #include <algorithm>
  17. #include <string>
  18. #include <list>
  19. #include <fstream>
  20. #include <cstring>
  21. #include <climits>
  22. #include <random>
  23.  
  24. using namespace std;
  25.  
  26. typedef unsigned long long ull;
  27. typedef long long ll;
  28. typedef pair<int, int> pii;
  29. typedef vector<int> vi;
  30. typedef vector<ll> vll;
  31. typedef multiset<ll> mll;
  32.  
  33. #define forn(i, n) for (int i = 0; i < (int)n; i++)
  34. #define for1(i, n) for (int i = 1; i <= (int)n; i++)
  35. #define forq(i, s, t) for (int i = s; i <= t; i++)
  36. #define ford(i, s, t) for (int i = s; i >= t; i--)
  37. #define mk make_pair
  38. #define inb push_back
  39. #define outb pop_back
  40. #define ump unordered_map
  41. #define all(v) v.begin(), v.end()
  42. #define TIME clock() * 1.0 / CLOCKS_PER_SEC
  43. #define randint(x,y)
  44. #define randlong(x, y)
  45. #define TASK ""
  46.  
  47. const double eps = 1e-15;
  48. const double pi = acos(-1.0);
  49.  
  50. const int MAXN = (int)1e5 + 7;
  51. const int INF = (ll)2e9;
  52. const ll LINF = (ll)8e18;
  53. const int MOD = (ll)1e9 + 7;
  54.  
  55. void gen();
  56. int solve();
  57.  
  58. int main()
  59. {
  60. #ifdef _DEBUG
  61.     gen();
  62.     freopen("input.txt", "r", stdin);
  63.     freopen("output.txt", "w", stdout);
  64.     freopen("test.txt", "w", stderr);
  65.     double tstart = TIME;
  66. #else
  67.     //freopen(TASK".in", "r", stdin), freopen(TASK".out", "w", stdout);
  68.     //freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout), freopen("test.txt", "w", stderr);
  69. #endif
  70.     solve();
  71. #ifdef _DEBUG
  72.     double tend = TIME;
  73.     cerr << tend - tstart << " s.\n";
  74. #endif
  75.     return 0;
  76. }
  77.  
  78. void gen()
  79. {
  80.     freopen("input.txt", "a+", stdout);
  81.     srand(time(0));
  82.     return;
  83. }
  84.  
  85. int n, m;
  86. vll a;
  87.  
  88. bool check(int x)
  89. {
  90.     vll dp(n + 2);
  91.     mll p;
  92.     p.insert(0);
  93.     for (int i = 1, l = 0; i <= n + 1; i++)
  94.     {
  95.         if (i - l > x)
  96.             p.erase(p.find(dp[l++]));
  97.         p.insert(dp[i] = a[i - 1] + *p.begin());
  98.     }
  99.     return dp[n + 1] <= m;
  100. }
  101.  
  102. int solve()
  103. {
  104.     cin >> n >> m;
  105.     a.resize(n + 1);
  106.     forn(i, n)
  107.     {
  108.         scanf("%I64d",&a[i]);
  109.     }
  110.     int l = 0, r = n + 1;
  111.     for1 (i, 100)
  112.     {
  113.         int s = (l + r) / 2;
  114.         if (check(s))
  115.             r = s;
  116.         else
  117.             l = s;
  118.     }
  119.     printf("%d", r);
  120.     return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement