Advertisement
Guest User

Untitled

a guest
Sep 24th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. int N;
  6. int K;
  7. int L;
  8. int fun[1001];
  9. int ks[2][20001];
  10. int dizzy[1001];
  11.  
  12. int sack()
  13. {
  14. ks[0][0]=0;
  15. ks[0][fun[0]]= dizzy[0];
  16. int cur;
  17. int next;
  18. int d1;
  19. int d2;
  20. for(int i=0; i+1<N; i++)
  21. {
  22. cur=i%2;
  23. next= (i+1)%2;
  24. fill(ks[next],ks[next]+20001, 300001);
  25. for(int j=0; j<=20000; j++)
  26. {
  27. d2= j+fun[i+1];
  28. if(ks[cur][j]<300001)
  29. {
  30. ks[next][j]= min(max(ks[cur][j]-K,0), ks[next][j]);
  31. if(ks[cur][j]+dizzy[i+1]<=L)
  32. ks[next][d2]= min(ks[cur][j]+dizzy[i+1],ks[next][d2]);
  33. }
  34. }
  35. }
  36. for(int i=20000; i>=0; i--)
  37. if(ks[(N-1)%2][i]<300001)
  38. return i;
  39. return -1;
  40. }
  41. int main()
  42. {
  43. while(true)
  44. {
  45. cin>> N;
  46. cin>> K;
  47. cin>> L;
  48. if(N==0)
  49. break;
  50. fill(ks[0],ks[0]+20001,300001);
  51.  
  52. for(int i=0; i<N; i++)
  53. { cin>> fun[i]; cin>> dizzy[i];}
  54.  
  55. cout<< sack()<< endl;
  56.  
  57. }
  58.  
  59.  
  60. return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement