70 pts 求调
查看原帖
70 pts 求调
961351
nightwatch.ryan楼主2024/5/8 19:08
#include<iostream>
#include<cmath>
#define N 1005
char mp[N][N];
int calc(int HP_0,int ST_0,int DE_0,int ST,int DE){
	return std::max(1,(int)ceil(HP_0/std::max(1,ST-DE_0))*std::max(1,ST_0-DE));
}
void operator_(int &x,int &y,int d){
	if(d==1)y--;
	else if(d==2)y++;
	else if(d==3)x--;
	else if(d==4)x++;
}
int main(){
	int n,m;
	std::cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			std::cin>>mp[i][j];
	int HP_0,ST_0,DE_0;
	std::cin>>HP_0>>ST_0>>DE_0;
	int x,y;
	std::cin>>x>>y;
	int ST,DE,HP=0;
	std::cin>>ST>>DE;
	int q;
	std::cin>>q;
	while(q--){
		int op;
		std::cin>>op;
		if(op==2){
			int d;
			std::cin>>d;
			operator_(x,y,d);
			if(mp[x][y]=='.')continue;
			if(mp[x][y]=='M')HP+=calc(HP_0,ST_0,DE_0,ST,DE);
			else if(mp[x][y]=='Q')ST+=5;
			else if(mp[x][y]=='Y')DE+=5;
			else if(mp[x][y]=='R')
			if(HP<=10)HP=0;
			else HP-=10;
		}else std::cout<<HP<<" "<<ST<<" "<<DE<<"\n"; 
	}
}
2024/5/8 19:08
加载中...