Advertisement
Ankit_132

C

Apr 8th, 2024
3,464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define ll     long long
  6. #define _test   int _TEST; cin>>_TEST; while(_TEST--)
  7. #define pb     push_back
  8. #define ppb    pop_back
  9. #define pf     push_front
  10. #define ppf    pop_front
  11.  
  12. int main()
  13. {
  14.     _test
  15.     {
  16.         ll int n, k;
  17.         cin>>n>>k;
  18.  
  19.         deque<ll int> dq;
  20.  
  21.         for(int i=0, x; i<n; i++)
  22.         {
  23.             cin>>x;
  24.             dq.pb(x);
  25.         }
  26.  
  27.         int f=1, ans=0;
  28.  
  29.         while(k>0 && dq.size())
  30.         {
  31.             if(dq.size() == 1)
  32.             {
  33.                 if(dq.front() <= k)
  34.                     ans++;
  35.  
  36.                 break;
  37.             }
  38.  
  39.             int x = dq.front();
  40.             int y = dq.back();
  41.  
  42.             dq.ppf(), dq.ppb();
  43.  
  44.             int z = min(x, y);
  45.  
  46.             if(f == 1)
  47.             {
  48.                 if(z == x)
  49.                 {
  50.                     if(k < 2*z-1)       break;
  51.  
  52.                     k -= 2*z-1;
  53.                     y -= z-1;
  54.                     f = 0;
  55.                     dq.pb(y);
  56.                     ans++;
  57.                 }
  58.                 else
  59.                 {
  60.                     if(k < 2*z)         break;
  61.  
  62.                     k -= 2*z;
  63.                     x -= z;
  64.                     dq.pf(x);
  65.                     ans++;
  66.                 }
  67.             }
  68.             else
  69.             {
  70.                 if(z == y)
  71.                 {
  72.                     if(k < 2*z-1)       break;
  73.  
  74.                     k -= 2*z-1;
  75.                     x -= z-1;
  76.                     f = 1;
  77.                     dq.pf(x);
  78.                     ans++;
  79.                 }
  80.                 else
  81.                 {
  82.                     if(k < 2*z)         break;
  83.  
  84.                     k -= 2*z;
  85.                     y -= z;
  86.                     dq.pb(y);
  87.                     ans++;
  88.                 }
  89.             }
  90.         }
  91.  
  92.         cout<<ans<<"\n";
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement