0
点赞
收藏
分享

微信扫一扫

zcmu 5163: 教科书般的亵渎

小a草 2022-04-07 阅读 47
c++

 炉石传说真tm好玩

测试的时候,a[i]=1的时候加判断使ans+1,加没加都给过了,不知道有没有什么问题。

赶脚应该加个判断的。

#include<bits/stdc++.h>
#define ll long long
#define ve vector
#define mp map
#define NO cout<<"NO"<<endl;
#define YES cout<<"YES"<<endl;
#define pre(i,a,b) for(int i=a;i<=b;++i)
#define rep(i,b,a) for(int i=b;i>=a;--i)
#define mem(a,b) memset(a,b,sizeof(a))
#define st string
#define N 100005
using namespace std;
const int maxn=1e6+5;
const ll mod =1e15;
const int dx[]={-1,0,1,0};
const int dy[]={0,1,0,-1};
//set<ll> s;
ve<ll> v;
priority_queue<ll, ve<ll>, greater<ll> >q;

int a[N],b[N];
int main(){
int n,k,ans=0,maxx=0;
cin>>n>>k;
pre(i,1,n){
cin>>a[i];
b[a[i]]++;
}
int pos=0;bool flag=0;//标记判定
while(1){
pos++; flag=0;
if(b[pos]>0){
b[pos]--;
flag=1;
}else if(b[pos+k]>0){
b[pos+k]--;
flag=1;
}
if(!flag){break;}//当前血量与+k点血量一起判断,到0后得亵渎张数。
}
pre(i,1,n)
if(a[i]<=pos+k)maxx++;
pre(i,1,n){
a[i]-=k;
if(a[i]<=0) ans++;//最终消灭的怪物数量取亵渎+魔法箭或单纯魔法箭击杀的最大值
}
cout<<max(ans,maxx)<<" "<<pos<<endl;
return 0;
}

 

举报

相关推荐

0 条评论