fork download
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. template <typename T> bool maximize(T &res, const T &val){if(res < val) return res = val, true; return false;}
  6. template <typename T> bool minimize(T &res, const T &val){if(res > val) return res = val, true; return false;}
  7.  
  8. #define ll long long
  9. #define fi first
  10. #define se second
  11. #define pb push_back
  12. #define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; i++)
  13. #define FORD(i, b, a) for(int i = (b), _a = (a); i >= _a; i--)
  14. #define REP(i, n) for(int i = 0, _n = (n); i < _n; i++)
  15. #define C make_pair
  16. #define MASK(i) (1LL << (i))
  17. #define TURN_ON(i, x) ((x) | MASK(i))
  18. #define TURN_OFF(i, x) ((x) & ~MASK(i))
  19. #define RE(i, x) ((x) ^ MASK(i))
  20.  
  21. const ll mod = 1e9 + 7;
  22. const ll INF = 1e15;
  23. const int maxn = 1e5 + 5;
  24. const int N = 2e6;
  25. typedef pair<int, int> pi;
  26. typedef pair<int, pair<int,int>> pii;
  27. typedef pair<ll, ll> pl;
  28. typedef pair<ll, pair<ll,ll>>pll;
  29.  
  30. struct edge{
  31. int u,v,w;
  32. edge(int u = 0, int v = 0, int w = 0)
  33. {
  34. this->u = u;
  35. this->v = v;
  36. this->w = w;
  37. }
  38. };
  39. struct matrix{
  40. ll val[3][3];
  41. matrix(){
  42. memset(val, 0, sizeof(val));
  43. }
  44. };
  45.  
  46. int n, a[5010];
  47. ll ans[5010];
  48. int mp[2 * N + 100];
  49.  
  50. void nhap(){
  51. cin >> n;
  52. FOR(i, 1, n) cin >> a[i];
  53. }
  54. void solve(){
  55. mp[a[1] + a[2] + N]++;
  56. FOR(k, 3, n - 1){
  57. FOR(x, k + 1, n){
  58. ans[x] += mp[a[x] - a[k] + N];
  59. }
  60. FOR(i, 1, k - 1) mp[a[i] + a[k] + N]++;
  61. }
  62. FOR(i, 1, n) cout << ans[i] << " ";
  63. }
  64. int main(){
  65. ios_base::sync_with_stdio(0);
  66. cin.tie(0); cout.tie(0);
  67. nhap();
  68. solve();
  69. return 0;
  70. }
  71.  
Success #stdin #stdout 0.01s 5732KB
stdin
9 
1 2 3 4 5 6 7 8 9 
stdout
0 0 0 0 0 1 1 2 3