結果
問題 |
No.2938 Sigma Sigma Distance Distance Problem
|
ユーザー |
![]() |
提出日時 | 2024-11-25 04:24:53 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 742 bytes |
コンパイル時間 | 1,574 ms |
コンパイル使用メモリ | 171,160 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-25 04:24:56 |
合計ジャッジ時間 | 3,009 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 |
ソースコード
#include <bits/stdc++.h> using namespace std; struct dat { int Count; long long totDis; dat() : Count(0), totDis(0) {} }; int main() { int N; cin >> N; long long Ans = 0; vector<int> A(N); vector<dat> L(501), R(501); for (int i = 0; i < N; i++) { cin >> A.at(i); R.at(A.at(i)).Count++; R.at(A.at(i)).totDis += i; } for (int i = 0; i < N; i++) { for (int j = 1; j < 501; j++) { int diff = abs(A.at(i) - j); Ans += ((long long)i * L.at(j).Count - L.at(j).totDis) * diff; Ans += (R.at(j).totDis - (long long)i * R.at(j).Count) * diff; } R.at(A.at(i)).Count--; R.at(A.at(i)).totDis -= i; L.at(A.at(i)).Count++; L.at(A.at(i)).totDis += i; } cout << Ans << endl; }