Advertisement
PikMike

Untitled

Jan 24th, 2017
419
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define pb push_back
  4. #define mp make_pair
  5. #define sz(x) (int)(x).size()
  6. #define li long long
  7. #define ld long double
  8. #define x first
  9. #define y second
  10. #define pt pair<int, int>
  11. #define pll pair<ll, ll>
  12. #define forn(i, t) for(int i = 0; i < (t); i++)
  13. #define fore(i, f, t) for(int i = (f); i < (t); i++)
  14. #define forr(i, f, t) for(int i = (f) - 1; i >= (t); i--)
  15. #define all(x) (x).begin(), (x).end()
  16. #define ins insert
  17.  
  18. using namespace std;
  19.  
  20.  
  21. const int INF = 1e9 + 7;
  22. const int MOD = 1e9 + 7;
  23. const li INF64 = 1e18;
  24. const ld EPS = 1e-7;
  25.  
  26. mt19937 myrand(time(NULL));
  27.  
  28. const int N = 2000 + 21;
  29.  
  30. int n;
  31. int a[N][5];
  32.  
  33.  
  34. bool read(){
  35.     if(scanf("%d", &n) != 1)
  36.         return 0;
  37.     forn(i, n){
  38.         forn(j, 4)
  39.             scanf("%d", &a[i][j]);
  40.         a[i][4] = (a[i][1] > a[i][2] ? 0 : a[i][1] + a[i][3] > a[i][2] ? (a[i][2] + a[i][3] - a[i][1] + 2) / 2 : INF);
  41.     }
  42.     return 1;
  43. }
  44.  
  45.  
  46. int dp[N][N];
  47.  
  48.  
  49. void solve(){
  50.     forn(i, n + 1) forn(j, N) dp[i][j] = INF;
  51.     dp[0][0] = 0;
  52.     forn(i, n)
  53.         forn(j, N){
  54.             if (j + a[i][0] < N)
  55.                 dp[i + 1][j + a[i][0]] = min(dp[i + 1][j + a[i][0]], dp[i][j] + a[i][4]);
  56.             dp[i + 1][j] = min(dp[i + 1][j], dp[i][j]);
  57.         }
  58.     int sum = 0, ans = INF;
  59.     forn(i, n)
  60.         sum += a[i][0];
  61.     forn(i, N)
  62.         if (sum - i < i)
  63.             ans = min(ans, dp[n][i]);
  64.     if (ans == INF)
  65.         printf("impossible\n");
  66.     else
  67.         printf("%d\n", ans);
  68. }
  69.  
  70.  
  71. int main(){
  72.     #ifdef _DEBUG
  73.         freopen("input.txt", "r", stdin);
  74.     #endif
  75.     while(read())
  76.         solve();
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement