50pts求助
查看原帖
50pts求助
999916
WWW_bilibili_com楼主2023/10/22 15:59
#include<bits/stdc++.h>
using namespace std;
int line1[1000000];
int line2[1000000];
int line[1000000];
int f=0,l=0,b=0,f2=0;
bool cc=1;
void cs(){
	l-=f2;
	for(int var=0;var<b-f2;var++){
		line1[var]=line1[var+f2];
	}
	for(int var=0;var<f-f2;var++){
		line1[var]=line2[f2+var];
	}
	sort(line1,line1+l+1);
	return;
}
void end(){
	if(line1[l]-line1[0]>line1[1]||l==1||line1[0]==0){
		if(cc){
			f++;
		}
		cout<<b-f<<endl;
	}
	else{
		line1[0]=line1[l]-line1[0];
		l--;
		cc^=1;
		end();
	}
	return;
}
void eat(){
	if((line1[l]-line1[f]>=line1[f+1]||line2[f2]-line1[f]>=line1[f+1]&&f2<f)&&l-f>0){
		if(line2[f2]-line1[f]>=line1[l]-line1[f]&&f2<f){
			line2[f]=line2[f2]-line1[f];
			f2++;
			f++;
			eat();
		}
		else{
			line2[f]=line1[l]-line1[f];
			l--;
			f++;
			eat();
		}
	}
	else{
		cs();
		end();
	}
	return;
}
int main(){
	int a,c,d;
	scanf("%d%d",&a,&b);
	l=b-1;
	f=0;
	for(int var=0;var<b;var++){
		scanf("%d",&line1[var]);
		line[var]=line1[var];
	}
	eat();
	for(int ar=1;ar<a;ar++){
		cc=1;
		l=b-1;
		f=0;
		f2=0;
		scanf("%d",&c);
		for(int var=0;var<b;var++){
			line1[var]=line[var];
		}
		for(int var=0;var<b;var++){
			line2[var]=0;
		}
		for(int var=0;var<c;var++){
			scanf("%d",&d);
			scanf("%d",&line1[d-1]);
			line[d-1]=line1[d-1];
		}
		eat();
	}
	return 0;
}
2023/10/22 15:59
加载中...