蒟蒻求条
  • 板块学术版
  • 楼主chenyuchen_1
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/30 22:13
  • 上次更新2024/3/31 09:06:27
查看原帖
蒟蒻求条
1023780
chenyuchen_1楼主2024/3/30 22:13

求各位大佬帮帮忙吧(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;
}
2024/3/30 22:13
加载中...