奇怪的球 时限:1s 空间:256m
文景收到了N(1≤N≤4×10^5)个奇怪的球,球摆成一列,每个球的表面都写着一个数字,第i个球的表面数字是a[i](2≤a[i]≤4×10^5)。
文景准备将所有的球从1到N依次放入桶中。桶是圆柱形的,底面是封死的,只能从圆柱形顶端放入。桶比较窄,桶中的球只能全部竖着叠放。
文景在放球的过程中,奇怪的事情发生了,如果桶中有连续x个值为x的球,这些球将会消失。
请你帮助文景计算出,从1到N依次放入每个球后,桶中的球有多少个?
输入格式
第一行一个正整数N;
第二行N个正整数,从1到N依次表示每个球表面的数字。
【时间限制、数据范围及描述】:
时间:1s 空间:256M
对于30%的数据:1≤N≤10^4;2≤a[i]≤100;
对于100%的数据:1≤N≤4×10^5;2≤a[i]≤4×10^5;
输出格式
输出N行,每行一个整数,第i行表示放完第i个球后桶中球的个数。
输入/输出例子1
输入:
5
3 2 3 2 2
输出:
1
2
3
4
3
输入/输出例子2
输入:
10
2 3 2 3 3 3 2 3 3 2
输出:
1
2
3
4
5
3
2
3
1
0
样例解释
考虑样例1:
第1个球放入后,桶中球从下至上依次为:3
第2个球放入后,桶中球从下至上依次为:3 2
第3个球放入后,桶中球从下至上依次为:3 2 3
第4个球放入后,桶中球从下至上依次为:3 2 3 2
第5个球放入后,桶中球从下至上依次为:3 2 3

#include<bits/stdc++.h>
using namespace std;
long long n;
int main(){
scanf("%lld",&n);
vector<long long>a(n);
vector<long>bucket;
for(long long i=0;i<n;i++){
scanf("%lld",&a[i]);
}
for(long long i=0;i<n;i++){
bucket.push_back(a[i]);
long long count=1;
for(long long j=bucket.size()-2;j>=0&&bucket[j]==a[i];j--){
count++;
}
if(count==a[i]){
bucket.erase(bucket.end()-count,bucket.end());
}
printf("%d\n",bucket.size());
}
return 0;
}
天才们,帮我看看哪错了,求帮助┭┮﹏┭┮