提交时间:2026-05-04 21:28:13
运行 ID: 439066
#include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std; int main() { int N; cin >> N; vector<int> A(N + 1); for (int i = 1; i <= N; i++) { cin >> A[i]; } long long ans = 0; const int MAX_VAL = 1000; for (int i = 1; i <= N; i++) { vector<int> cnt(MAX_VAL + 2, 0); // 初始化计数 A[i+1..N] for (int t = i + 1; t <= N; t++) { cnt[A[t]]++; } // 前缀和数组 vector<int> pref(MAX_VAL + 2, 0); for (int v = 1; v <= MAX_VAL; v++) { pref[v] = pref[v - 1] + cnt[v]; } for (int j = i + 1; j <= N; j++) { // 从计数中去掉 A[j] cnt[A[j]]--; // 更新前缀和 for (int v = A[j]; v <= MAX_VAL; v++) { pref[v]--; } int L = abs(A[i] - A[j]); int R = A[i] + A[j] - 1; if (R > MAX_VAL) R = MAX_VAL; if (L < R) { ans += pref[R] - pref[L]; } } } cout << ans << endl; return 0; }