1 solutions

  • 1
    @ 2025-1-17 17:05:42

    轻轻又松松,19行

    #include <bits/stdc++.h>
    using namespace std;
    map<int,int> mp;
    int main(){
    	int n,x,ans = 0;
    	scanf("%d",&n);
    	for(int i = 1;i<=n;i++){
    		scanf("%d",&x);
    		mp[x]++;
    	}
    	for(int j = 0;j<=x;j++){
    		if(mp[j]/2 && j == x)x++;
    		mp[j+1]+=mp[j]/2;
    		mp[j] = mp[j]%2;
    		if(!mp[j])ans++;
    	}
    	printf("%d",ans);
    	return 0;
    }
    
    • 1

    Information

    ID
    686
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    9
    Tags
    (None)
    # Submissions
    12
    Accepted
    4
    Uploaded By