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 条评论