C. Sonya and Robots

sample 1

f:id:peroon:20201116143056p:plain

int main(){
    // input
    ll N; 
    cin>>N;

    VI A(N);
    rep(i, N) cin >> A[i];
    
    map<ll,ll> mp, mp2;
    
    // left
    mp[A[0]]++;

    // right
    FOR(i,1,N)mp2[A[i]]++;

    ll sum=0;
    sum += mp.size() * mp2.size();

    FOR(i,1,N-1){
      // i番目を左に移動
      ll a = A[i];
      bool new_val=false;
      if(mp.count(a)==0){
        new_val=true;
      }

      mp[a]++;
      mp2[a]--;
      if(mp2[a]==0){
        auto it = mp2.find(a);
        mp2.erase(it);
      }

      if(new_val){
        sum += mp2.size();
      }
    }
    p(sum);
    
    return 0;
}