题目描述
Alice 和 Bob 开始了吃瓜比赛。现在有 nnn 个单位的瓜,两个人每次可以拿起 111 到 LLL 某个整数单位的瓜,拿了 kkk 单位的瓜后必须花 kkk 单位的时间吃掉手里的瓜才能继续拿瓜吃,直到瓜全都被吃完。而且 Alice 和 Bob 不能拿对方手里的瓜。假设拿瓜是可以在瞬间完成的。还假设 Alice 的反应速度总是比 Bob 快,意思是:若两人在一瞬间内同时拿瓜,则必定是 Alice 先拿完瓜 Bob 再拿瓜。
现在两人在比赛开始的瞬间同时拿瓜,且双方的目的都是吃到尽可能多的瓜,求 Alice 最多能吃多少瓜。
输入格式
本题有多组数据。
第一行一个整数 TTT 表示有 TTT 组数据。
接下来 TTT 行,每行两个整数分别表示 n,Ln,Ln,L。
输出格式
共 TTT 行,每行输出一个整数表示对应数据的答案。
样例
样例输入
1
9 8
样例输出
8
样例解释
Alice 在比赛开始后的瞬间拿走了 888 单位的瓜,这时无论 Bob 怎么拿都只能吃到不超过 111 单位的瓜。
如果 Alice 一开始拿的瓜不到 888 单位,Bob 就会拿走其他所有瓜。
所以 Alice 最多能吃到 888 单位的瓜。
数据范围与提示
1≤T≤10001\le T\le 10001≤T≤1000
1≤n,L≤10181\le n,L\le 10^{18}1≤n,L≤10
18
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long LL;
const LL INF=1e18;
const int MAXN=1e5+5;
const int MOD=1e9+7;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
LL n,L;
scanf("%lld%lld",&n,&L);
if(n<=L) printf("%lld\n",n);
else if(n>L&&n<=2*L) printf("%lld\n",L);
else printf("%lld\n",(LL)((n+1)/2));
}
return 0;
}