Dang_Quan_10_Tin

ARRANGE

Jul 23rd, 2020
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #define task "ARRANGE"
  5. using namespace std;
  6. using ll = long long;
  7. using ld = long double;
  8.  
  9. const int N = 1e3 + 5;
  10. ll n, m, k;
  11. ll f[N][N], a[N][N];
  12.  
  13. void Read(){
  14.     cin >> n >> m >> k;
  15. }
  16.  
  17. ll Cal(ll u, ll v){
  18.     return (v - u + 1) * (v + u) / 2;
  19. }
  20.  
  21. bool Check(ll v){
  22.     ll p = max(v - k + 1, 1ll);
  23.     ll q = max(1ll, v + k - n);
  24.     return m - v >= Cal(p, v - 1) + Cal(q, v - 1);
  25.  
  26. }
  27.  
  28. void Solve(){
  29.     ll l = 0, h = m;
  30.     while(l <= h){
  31.         ll m = (l + h) / 2;
  32.         if(Check(m))
  33.             l = m + 1;
  34.         else
  35.             h = m - 1;
  36.     }
  37.     cout << m - h << "\n";
  38. }
  39.  
  40. main(){
  41.     ios::sync_with_stdio(0);
  42.     cin.tie(0);
  43.     cout.tie(0); if(fopen(task".INP", "r"))
  44.     freopen(task".INP", "r", stdin),
  45.     freopen(task".OUT", "w", stdout);
  46.     int t;
  47.     cin >> t;
  48.     while(t--){
  49.         Read();
  50.         Solve();
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment