Advertisement
Guest User

Untitled

a guest
Aug 17th, 2013
430
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cstring>
  5. #include <algorithm>
  6. #include <cmath>
  7. #include <vector>
  8. #include <map>
  9. #include <set>
  10. #include <ctime>
  11. #include <cassert>
  12. #include <queue>
  13.  
  14. using namespace std;
  15.  
  16. const int inf = (int)1e9;
  17. int t[101][2];
  18. int dp[2][101];
  19. int n, m;
  20.  
  21. bool Ok(int needTime) {
  22.     for (int j = 0; j <= m; ++j)
  23.         dp[1][j] = inf;
  24.  
  25.     dp[1][m] = m;
  26.     for (int i = 0; i < n; ++i) {
  27.         for (int j = 0; j <= m; ++j) {
  28.             dp[0][j] = dp[1][j];
  29.             dp[1][j] = inf;
  30.         }
  31.  
  32.         for (int j = 0; j <= m; ++j) if (dp[0][j] < inf)
  33.             for (int k = 0, curtime = 0; k <= j && curtime <= needTime; ++k, curtime += t[i][0])   
  34.                 dp[1][j - k] = min(dp[1][j - k], max(0, dp[0][j] - (needTime - curtime) / t[i][1]));       
  35.         if (dp[1][0] == 0) return true;
  36.     }
  37.     return false;
  38.  
  39. }
  40.  
  41. void Solve() {
  42.     scanf("%d%d", &n, &m);
  43.     for (int i = 0; i < n; ++i)
  44.         scanf("%d%d", &t[i][0], &t[i][1]);
  45.     int le = 0, ri = 50001;
  46.     while (ri - le > 1) {
  47.         int mid = (le + ri) >> 1;
  48.         if (Ok(mid)) ri = mid; else
  49.         le = mid;
  50.     }
  51.     printf("%d\n", ri);
  52.    
  53. }
  54.  
  55. int main() {
  56.     #ifdef LOCAL
  57.         freopen("in","r",stdin);
  58.         freopen("out","w",stdout);
  59.     #endif
  60.     int tests;
  61.     scanf("%d", &tests);
  62.     for (int test = 1; test <= tests; ++test) {
  63.         printf("Case %d: ", test);
  64.         Solve();
  65.     }
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement