题意:给你n个人和两个尖子生a,b,你可以操作k次,每次操作交换相邻两个人的位置,求问操作k次以内使得ab两人距离最远是多少
题解:贪心尽可能的将两人往两边移动,总结一下就是min(n-1,|a-b|+x)
代码:
#include<iostream> #include<cstdio> #include<cstdlib> using namespace std; int T; int n,m,a,b; int main() { scanf("%d",&T); while(T--) { scanf("%d%d%d%d",&n,&m,&a,&b); if(a>b)swap(a,b); int t=min(a-1,m); a-=t;m-=t; t=min(n-b,m); b+=t;m-=t; printf("%d ",b-a); } return 0; }