中位數計數

2021-08-08 23:05:08 字數 804 閱讀 3026

中位數定義為所有值從小到大排序後排在正中間的那個數,如果值有偶數個,通常取最中間的兩個數值的平均數作為中位數。

現在有n個數,每個數都是獨一無二的,求出每個數在多少個包含其的區間中是中位數。

input

第一行乙個數n(n<=8000)

第二行n個數,0<=每個數<=10^9

output

n個數,依次表示第i個數在多少包含其的區間中是中位數。
input示例

5

1 2 3 4 5

output示例

1 2 3 2 1

#include #include using namespace std;

const int maxn = 8005;

int count[maxn*2];

int input[maxn];

int n;

int main()

int result = 1;

for (int i = 0; i < n; i++)

else

count[maxn+sum]++;

if (sum == 0)

}sum = 0;

for (int j = i+1; j < n; j++)

else

if (sum == 0)

result += count[maxn-sum];

}cout << result << " ";

}cout << endl;

return 0;

}

中位數計數

problem description 中位數定義為所有值從小到大排序後排在正中間的那個數,如果值有偶數個,通常取最中間的兩個數值的平均數作為中位數。現在有 n 個數,每個數都是獨一無二的,求出每個數在多少個包含其的區間中是中位數。input 多組測試資料 第一行乙個數 n n 8000 第二行 n...

中位數的中位數

參照王曉東的演算法設計 中位數的中位數,即將一串數分成n段,求其排好序了的中間那個數,再把這些所有中位數再求一次中位數。for int i 0 i r p 4 5 i 找中位數的中位數,r p 4即上面所說的n 5 int x lineselect a,p,p r p 4 5,r p 4 10 線性...

HDU 5701 中位數計數

中位數定義為所有值從小到大排序後排在正中間的那個數,如果值有偶數個,通常取最中間的兩個數值的平均數作為中位數。現在有n個數,每個數都是獨一無二的,求出每個數在多少個包含其的區間中是中位數。多組測試資料 第一行乙個數n n 8000 第二行n個數,0 每個數 109 n個數,依次表示第i個數在多少包含...