Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #define task "ARRANGE"
- using namespace std;
- using ll = long long;
- using ld = long double;
- const int N = 1e3 + 5;
- ll n, m, k;
- ll f[N][N], a[N][N];
- void Read(){
- cin >> n >> m >> k;
- }
- ll Cal(ll u, ll v){
- return (v - u + 1) * (v + u) / 2;
- }
- bool Check(ll v){
- ll p = max(v - k + 1, 1ll);
- ll q = max(1ll, v + k - n);
- return m - v >= Cal(p, v - 1) + Cal(q, v - 1);
- }
- void Solve(){
- ll l = 0, h = m;
- while(l <= h){
- ll m = (l + h) / 2;
- if(Check(m))
- l = m + 1;
- else
- h = m - 1;
- }
- cout << m - h << "\n";
- }
- main(){
- ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0); if(fopen(task".INP", "r"))
- freopen(task".INP", "r", stdin),
- freopen(task".OUT", "w", stdout);
- int t;
- cin >> t;
- while(t--){
- Read();
- Solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment