40分,蒟蒻求助!!!
查看原帖
40分,蒟蒻求助!!!
1255488
__notTrueLight__楼主2024/3/15 22:48

RT

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,b,a;
	cin>>n>>a>>b;
	int flis[n],adlis[n];
	for(int i=0;i<n;i++){
		cin>>flis[i];
		if(i==a-1){
		adlis[i]=1;	
		}else{
		adlis[i]=0;
		}
	}
	stack <int>zb;int belis[n];short pd=1;
	for(int i=a-1;i!=b-1;){
		if(i-flis[i]>0 && i-flis[i]<n && i+flis[i]>0 && i+flis[i]<n && adlis[i-flis[i]]==0 && adlis[i+flis[i]]==0){
			zb.push(i);
			for(int i=0;i<n;i++){
				belis[i]=adlis[i];
			}
			i+=flis[i];adlis[i]=1;
		}else if(i+flis[i]>0 && i+flis[i]<n && adlis[i+flis[i]]==0){
			i+=flis[i];adlis[i]=1;
		}else if(i-flis[i]>0 && i-flis[i]<n && adlis[i-flis[i]]==0){
			i-=flis[i];adlis[i]=1;
		}else{
			if(!zb.empty()){
				i=zb.top();
				for(int i=0;i<n;i++){
				adlis[i]=belis[i];
				}
				i-=flis[i];adlis[i]=1;
			}else{
				cout<<-1;
				pd=0;
				break;
			}
		}
	}
	if(pd==1){
		int an=0;
	for(int i=0;i<n;i++){
		if(adlis[i]==1){
			an++;
		}
	}
	cout<<an-1;
	}

	return/*191981*/0;
}

测试点7,8,10,11,12,16 AC

1,2,3,4,5,6,13,14 TLE

还有9,15 WA

2024/3/15 22:48
加载中...