一開始想到要維持樹的平衡好像很累人,不知還有沒有更好的方法?
偷懶,試了幾個方法都不行,最後想到用現成的set,AC了!
假設最少有一個數字放入mutliset<int> s中,iterator是it
另一個bool sw記錄目前set中有奇數或偶數個,
若奇數:新增的數比(*it)小則將(*it)及(it的前一個)相加÷2輸出
>=(*it)則將(*it)及(it的後一個)相加÷2輸出
若偶數:新增的數比(*it)小則將(*it)輸出
>=(*it)則將it後移一個,輸出新的(*it)
以上it維持指向{奇:中間、偶:中偏左}
以set維持排序只需 n.log(n) ,每新增一數也只要前移或後移1格,果然AC
一開始想到要維持樹的平衡好像很累人,不知還有沒有更好的方法?
偷懶,試了幾個方法都不行,最後想到用現成的set,AC了!
假設最少有一個數字放入mutliset s中,iterator是it
另一個bool sw記錄目前set中有奇數或偶數個,
若奇數:新增的數比(*it)小則將(*it)及(it的前一個)相加÷2輸出
>=(*it)則將(*it)及(it的後一個)相加÷2輸出
若偶數:新增的數比(*it)小則將(*it)輸出
>=(*it)則將it後移一個,輸出新的(*it)
以上it維持指向{奇:中間、偶:中偏左}
以set維持排序只需 n.log(n) ,每新增一數也只要前移或後移1格,果然AC
更正:
若奇數:新增的數比(*it)小則將(*it)及(it的前一個)相加÷2輸出
新增的數比(*it)大則將(*it)及(it的後一個)相加÷2輸出,且it後移一格
新增的數等於(*it)則將(*it)及(it的後一個)相加÷2輸出
若偶數:新增的數比(*it)大或等於(*it)則將(*it)輸出
新增的數比(*it)小則將it前移一個,輸出新的(*it)
以上it維持指向{奇:中間、偶:中偏右}
一開始想到要維持樹的平衡好像很累人,不知還有沒有更好的方法?
偷懶,試了幾個方法都不行,最後想到用現成的set,AC了!
假設最少有一個數字放入mutliset s中,iterator是it
另一個bool sw記錄目前set中有奇數或偶數個,
若奇數:新增的數比(*it)小則將(*it)及(it的前一個)相加÷2輸出
>=(*it)則將(*it)及(it的後一個)相加÷2輸出
若偶數:新增的數比(*it)小則將(*it)輸出
>=(*it)則將it後移一個,輸出新的(*it)
以上it維持指向{奇:中間、偶:中偏左}
以set維持排序只需 n.log(n) ,每新增一數也只要前移或後移1格,果然AC
抱歉再更正:
若奇數:新增的數比(*it)小則將(*it)及(it的前一個)相加÷2輸出
新增的數比(*it)大或等於則將(*it)及(it的後一個)相加÷2輸出,且it後移一格
若偶數:新增的數比(*it)大或等於(*it)則將(*it)輸出
新增的數比(*it)小則將it前移一個,輸出新的(*it)
以上it維持指向{奇:中間、偶:中偏右}