代码如下
#include<bits/stdc++.h>
#define fs(i,x,y,z) for(int i=x;i<=y;i+=z)
const int N=1000001;
using namespace std;
int n,s[N<<1],ans,mx;
int main(){
// freopen("move.in","r",stdin);
// freopen("move.out","w",stdout);
scanf("%d",&n);
fs(i,1,n,1){
int a;scanf("%d",&a);
s[a]++;
}
fs(i,1,N<<1,1){if(s[i]!=0&&i<50) mx=max(mx,i);
s[i+1]+=(s[i]/2);
s[i]%=2;
if(s[i]) ans++;
if(i<10) printf("%d\n",ans);//P
}
//fs(i,1,mx,1) printf("%d ",s[i]);
printf("%d",ans);//Q
return 0;
}
输入:
5
1 1 2 3 3
输出:
0
0
1
2
2
2
2
2
2
0
其中前边几个数是调试代码中输出的ans,最后一行是最后输出的ans
在洛谷ide上也跑了,也会出现这样的问题
求助是我哪里写错了