#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
long long sm1[ 100000 + 1 ] ;
long long sm2[ 100000 + 1 ] ;
long long cnt1[ 100000 + 1 ] ;
long long cnt2[ 100000 + 1 ] ;
class Solution{
public :
vector< long long > getDistances( vector< int > & A) {
int i;
int N = A.size ( ) ;
vector< long long > res;
long long tmp;
for ( i= ( 0 ) ; i< ( 100000 + 1 ) ; i++ ) {
sm1[ i] = sm2[ i] = cnt1[ i] = cnt2[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
sm2[ A[ i] ] + = i;
cnt2[ A[ i] ] ++ ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
sm2[ A[ i] ] - = i;
cnt2[ A[ i] ] -- ;
tmp = ( sm2[ A[ i] ] - cnt2[ A[ i] ] * i) + ( cnt1[ A[ i] ] * i - sm1[ A[ i] ] ) ;
res.push_back ( tmp) ;
sm1[ A[ i] ] + = i;
cnt1[ A[ i] ] ++ ;
}
return res;
}
}
;
// cLay version 20211231-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// ll sm1[1d5+1], sm2[1d5+1], cnt1[], cnt2[];
//
// class Solution {
// public:
// vector<ll> getDistances(vector<int>& A) {
// int N = A.size();
// vector<ll> res; ll tmp;
// rep(i,1d5+1) sm1[i] = sm2[i] = cnt1[i] = cnt2[i] = 0;
// rep(i,N){
// sm2[A[i]] += i;
// cnt2[A[i]]++;
// }
// rep(i,N){
// sm2[A[i]] -= i;
// cnt2[A[i]]--;
// tmp = (sm2[A[i]] - cnt2[A[i]] * i) + (cnt1[A[i]] * i - sm1[A[i]]);
// res.push_back(tmp);
// sm1[A[i]] += i;
// cnt1[A[i]]++;
// }
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJpbmxpbmUiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIG1haW4gZHVtbXlfbWFpbgppbnQgbWFpbigpewogIHJldHVybiAwOwp9CiN1bmRlZiBtYWluCmxvbmcgbG9uZyBzbTFbMTAwMDAwKzFdOwpsb25nIGxvbmcgc20yWzEwMDAwMCsxXTsKbG9uZyBsb25nIGNudDFbMTAwMDAwKzFdOwpsb25nIGxvbmcgY250MlsxMDAwMDArMV07CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICB2ZWN0b3I8bG9uZyBsb25nPiBnZXREaXN0YW5jZXModmVjdG9yPGludD4mIEEpewogICAgaW50IGk7CiAgICBpbnQgTiA9IEEuc2l6ZSgpOwogICAgdmVjdG9yPGxvbmcgbG9uZz4gcmVzOwogICAgbG9uZyBsb25nIHRtcDsKICAgIGZvcihpPSgwKTtpPCgxMDAwMDArMSk7aSsrKXsKICAgICAgc20xW2ldID0gc20yW2ldID0gY250MVtpXSA9IGNudDJbaV0gPSAwOwogICAgfQogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIHNtMltBW2ldXSArPSBpOwogICAgICBjbnQyW0FbaV1dKys7CiAgICB9CiAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgc20yW0FbaV1dIC09IGk7CiAgICAgIGNudDJbQVtpXV0tLTsKICAgICAgdG1wID0gKHNtMltBW2ldXSAtIGNudDJbQVtpXV0gKiBpKSArIChjbnQxW0FbaV1dICogaSAtIHNtMVtBW2ldXSk7CiAgICAgIHJlcy5wdXNoX2JhY2sodG1wKTsKICAgICAgc20xW0FbaV1dICs9IGk7CiAgICAgIGNudDFbQVtpXV0rKzsKICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2ZXJzaW9uIDIwMjExMjMxLTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gbGwgc20xWzFkNSsxXSwgc20yWzFkNSsxXSwgY250MVtdLCBjbnQyW107Ci8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICB2ZWN0b3I8bGw+IGdldERpc3RhbmNlcyh2ZWN0b3I8aW50PiYgQSkgewovLyAgICAgaW50IE4gPSBBLnNpemUoKTsKLy8gICAgIHZlY3RvcjxsbD4gcmVzOyBsbCB0bXA7Ci8vICAgICByZXAoaSwxZDUrMSkgc20xW2ldID0gc20yW2ldID0gY250MVtpXSA9IGNudDJbaV0gPSAwOwovLyAgICAgcmVwKGksTil7Ci8vICAgICAgIHNtMltBW2ldXSArPSBpOwovLyAgICAgICBjbnQyW0FbaV1dKys7Ci8vICAgICB9Ci8vICAgICByZXAoaSxOKXsKLy8gICAgICAgc20yW0FbaV1dIC09IGk7Ci8vICAgICAgIGNudDJbQVtpXV0tLTsKLy8gICAgICAgdG1wID0gKHNtMltBW2ldXSAtIGNudDJbQVtpXV0gKiBpKSArIChjbnQxW0FbaV1dICogaSAtIHNtMVtBW2ldXSk7Ci8vICAgICAgIHJlcy5wdXNoX2JhY2sodG1wKTsKLy8gICAgICAgc20xW0FbaV1dICs9IGk7Ci8vICAgICAgIGNudDFbQVtpXV0rKzsKLy8gICAgIH0KLy8gICAgIHJldHVybiByZXM7Ci8vICAgfQovLyB9Owo=