士兵过河


今天WC的时候想起之前打比赛遇到一道挺有趣的题目 最后才做出来的

我们从上帝视角(就是站的很高很高)看士兵过河 每个士兵就好比是一个蚂蚁

两个蚂蚁相遇分别转向 就好比是两个蚂蚁一直直线行走 这样一个蚂蚁的时间就很好算

我们就能算出 所有蚂蚁的时间 但是a蚂蚁算出来的时间不一定是a蚂蚁走出河岸的时间 可能是b蚂蚁走出河岸的时间

考虑0一定都在1的前面 并且0的内部顺序 和1的内部顺序一定不变

点击查看代码
#include
using namespace std;
int a[100005],b[100005];
int main(){
	int n,L;
	cin>>n>>L;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	for(int i=1;i<=n;i++){
		cin>>b[i];
		if(b[i]==1)
		a[i]=L-a[i];
		//cout<<"a[i]="<