ccf 集合競價

2022-08-15 07:21:12 字數 1903 閱讀 5679

問題描述

試題編號:

201412-3

試題名稱:

集合競價

時間限制:

1.0s

記憶體限制:

256.0mb

問題描述:

問題描述

某**交易所請你編寫乙個程式,根據開盤前客戶提交的訂單來確定某特定**的開盤價和開盤成交量。

該程式的輸入由很多行構成,每一行為一條記錄,記錄可能有以下幾種:

1. buy p s 表示乙個購買**的買單,每手出價為p,購買股數為s。

2. sell p s 表示乙個****的賣單,每手出價為p,**股數為s。

3. cancel i表示撤銷第i行的記錄。

如果開盤價為p0,則系統可以將所有出價至少為p0的買單和所有出價至多為p0的賣單進行匹配。因此,此時的開盤成交量為出價至少為p0的買單的總股數和所有出價至多為p0的賣單的總股數之間的較小值。

你的程式需要確定乙個開盤價,使得開盤成交量盡可能地大。如果有多個符合條件的開盤價,你的程式應當輸出最高的那乙個。

輸入格式

輸入資料有任意多行,每一行是一條記錄。保證輸入合法。股數為不超過108的正整數,出價為精確到恰好小數點後兩位的正實數,且不超過10000.00。

輸出格式

你需要輸出一行,包含兩個數,以乙個空格分隔。第乙個數是開盤價,第二個是此開盤價下的成交量。開盤價需要精確到小數點後恰好兩位。

樣例輸入

buy 9.25 100

buy 8.88 175

sell 9.00 1000

buy 9.00 400

sell 8.92 400

cancel 1

buy 100.00 50

樣例輸出

9.00 450

評測用例規模與約定

對於100%的資料,輸入的行數不超過5000。

//模擬

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7struct

node8;

13 node n[5007],n1[5007],n2[5007

];14

bool flag[5007

];15

intnum,num1,num2;

16long

long

ans_num;

17double

ans_price;

18bool

cmp1(node n11,node n22)

1924}25

bool

cmp2(node n11,node n22)

2630

void

slove()

3143

if(ans_num48}

4950

intmain()

5160

else

if(n[num].s=="

cancel")

64}65for(int i=num-1;i>=1;i--)

6670

}71 num1=0;num2=0;72

for(int i=1;i)

7379

else

if(n[i].s=="

sell")

83}84}

85 sort(n1,n1+num1,cmp2);

86 sort(n2,n2+num2,cmp1);

87slove();

88 printf("

%.2lf %lld\n

",ans_price,ans_num);

89return0;

90 }

CCF 集合競價

以下是我做題的經驗,如有錯誤,請諒解並指正 s代表賣家,b代表買家 1.最好不要以s的 來選取開盤價p0 題目中已說明 如果有多個符合條件的開盤價,你的程式應當輸出最高的那乙個。b 應比s的高 以s的 來選取p0的 提交後錯誤 一 include include include include in...

12 競態條件 時序競態

sleep函式幾點說明 1 sleep函式作用,讓程序睡眠。2 能被訊號打斷,然後處理訊號函式以後,就不再睡眠了。直接向下執行 3 sleep函式的返回值,是剩餘的秒數 sleep是可被中斷的睡眠,但不一定睡夠100s sleep是可中斷的睡眠 void handler int num if 1 v...

如何確定競品物件 如何收集競品資料

該什麼時候進行?通常來說沒有明確的時間規定,也沒有明確的次數限制。在產品開發迴圈中的任意乙個環節開始都可以得到大量有效的資訊。怎樣確定競品?看上去是個很容易的活,但其實則比你想象的難。我們需要在腦中建立乙個清晰的 標尺 來將各種潛在的對手分級。確定了競品名單之後做什麼?接下來就需要把每個競品的詳細資...