30pts wa#~#31 求调
查看原帖
30pts wa#~#31 求调
1258467
hao12345ia楼主2024/11/10 08:16

评测记录

//first当前最后一个血量小于0的怪
//tianlepo天雷破给每个怪造成的伤害 
#include<bits/stdc++.h>
using namespace std;
int n,m;
int first;
int a[10000010];
unsigned long long ans=0;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+1+n);
	int tianlepo=0;
    while(m>0&&n-first>2){
        tianlepo++;
        m--;
        for(int i=first;i<n;i++){
        	if(a[i+1]-tianlepo<=0){
        		first++;
			}
			else{
				break;
			}
		}
        ans+=n-first;
    }//天雷破 
    while(m>0&&first<n){
    	if(a[first+1]-tianlepo==1){
    		first++;
			m--;
	        if(a[first+1]-tianlepo==1){
			   first++;
			   ans--;
			}
	        else if(first+1>n){
				 ans--;
			}
	        tianlepo++;
	        ans++;
	        continue;
	    }//天雷破
		a[first+1]-=2;			
		 m--;
 	  	if(a[first+1]-tianlepo>0){
                ans+=n-first;
			}
            else {
			    first++;
				ans+=n-first;
			}
    	//天音波 
	}
    while(first<n){
        ans+=(n-first)*(a[first+1]-tianlepo-1)+(n-first-1);
        first++;
    } //smoothA 
	cout<<ans; 
}
2024/11/10 08:16
加载中...