1388: PIPI的逃跑路线Ⅳ

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
ll vec[N];
int main(){
	ll n,X,Y,A,B;
	scanf("%lld%lld%lld%lld%lld",&n,&X,&Y,&A,&B);
	for(int i=1;i<=n;i++){
		scanf("%lld",&vec[i]);
		//sum[i]=sum[i-1]+vec[i];
	}
	ll num = (Y + A - 1) / A - 1; // 计算需要防御的回合数		
	if(num+1>n)
	{printf("Lose\n");
		return 0;
	 } 
	ll sum=0;
	priority_queue<ll> que;
	for(int i=1;i<=num;i++){
		sum+=vec[i];
		que.push(vec[i]);
	}
	for(int i=num+1;i<=n;i++){
		if(sum<X){
			printf("Win\n%d\n",i);
			return 0;
		}
		else{
			if(que.top()<B){
				que.pop();
				X+=B;         //增加血量 
			}
			else{
				sum= sum-que.top(); //使用护盾 
				que.pop();
			}
		}
		que.push(vec[i]); //最后再把popo这回合的攻击加进去,供i+1回合的pipi考虑前i回合的出招 
		sum+=vec[i]; 
	}
	printf("Lose\n");
	return 0;
}
posted @ 2026-03-08 14:46  peter_shen  阅读(10)  评论(0)    收藏  举报