90分 WA#10求调!!!
查看原帖
90分 WA#10求调!!!
1344756
ROU_bing楼主2024/9/1 12:23
#include <iostream>
#include <cstdio>
#include <queue>

using namespace std;

int n,bl,ml,a[1002],fx[2]={1,-1},ans,flag=1;
bool vis[1002][52];
struct node{
	int s,step;
};
queue <node> q;

int main(){
	scanf("%d%d%d",&n,&bl,&ml);
	for (int i=1;i<=n;i++)	scanf("%d",&a[i]);
	q.push({bl,1});
	vis[bl][1]=1;
	while (!q.empty()){
		node f=q.front();
		q.pop();
		flag=max(flag,f.step);
		if (f.step==n+1){
			ans=max(ans,f.s);
			continue;
		}
		for (int i=0;i<2;i++){
			int ss=f.s+a[f.step]*fx[i];
			if (ss>=0 && ss<=ml && !vis[ss][f.step+1]){
				vis[ss][f.step+1]=1;
				q.push({ss,f.step+1});
			}
		}
	}
	printf("%d",flag<n?-1:ans);
	return 0;
}
2024/9/1 12:23
加载中...