求各位大佬帮帮忙吧(ABC-347-E)
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[1000010];
map<int,int> mp;
int ans[1000010];
int sum_of_sum[1000010];
int mark[1000010];
map<int,int> add;
signed main(){
int n,q;
scanf("%lld%lld",&n,&q);
int sum = 0;
for(int i = 1;i <= q;i++)
{
scanf("%lld",&a[i]);
if(mp[a[i]] == 0)
{
mp[a[i]] = 1;
add[a[i]] = i;
sum++;
mark[a[i]] = 0;
}
else if(mp[a[i]] == 1)
{
mp[a[i]] = 0;
sum--;
ans[a[i]] += sum_of_sum[i-1]+sum - sum_of_sum[add[a[i]]];
add[a[i]] = q+1;
mark[a[i]] = 1;
}
sum_of_sum[i] = sum_of_sum[i-1]+sum;
//printf("%d ",sum_of_sum[i]);
}
//printf("\n");
for(int i = 1;i <= n;i++)
{
if(mark[i] == 0) printf("%lld ",ans[i]+sum_of_sum[q] - sum_of_sum[add[i]-1]);
else
{
printf("%lld ",ans[i]);
}
}
return 0;
}