2015-11-05 86 views
0

問題陳述輸入答案:價值和數量最多的occurence數

稀有鑽石的愛!其實,現在Rarity正在收集鑽石。 Rarity喜歡最珍貴,最閃亮的鑽石也就不足爲奇了,所以她總是關心鑽石的光澤。

Rarity對她的鑽石Q有疑問,她希望你回答他們,因爲她顯然不想自己回答。

起初,Rarity沒有鑽石。但是,在尋找鑽石的過程中,可能會發生以下情況:

Rarity發現了一顆閃亮的鑽石S. Rarity懷疑鑽石最閃亮的是多麼閃亮,並且所有鑽石中有多少顆鑽石是最閃亮的鑽石。如果沒有鑽石,則必須輸出失敗。 你決定幫助Rarity完成這項任務。對於第二種類型的每個查詢,回答她,最閃亮的鑽石是多麼閃亮,多少顆鑽石是最閃亮的。

輸入格式

第一行包含一個整數Q,查詢的數量。

接下來Q行,每行開始一個字,確定查詢的類型:

如果線與地址啓動時,一個單一的整數s如下,剛發現鑽石的光澤。 如果線條以ASK開頭,Rarity會要求最閃亮的鑽石的光澤以及最閃亮的鑽石的數量。 輸出格式

對於每個ASK查詢,在一行上輸出兩個整數,最大鑽石的光澤度和具有這種光澤度的鑽石的數量。

如果在給出ASK查詢時沒有菱形,則輸出將在單行上失敗。

約束

子任務1(13分) 1≤Q≤106 1≤S≤109

子任務2(30分) 1≤Q≤1百萬
1≤ S≤109

子任務3(27分) 1≤Q≤106 1≤S≤1十億

子任務4(30分) 1≤Q≤1億 1≤S≤1十億

不完善代碼

得分:70.00。判決:超出時間限制(TLE)

#include <iostream> 
    using namespace std; 

    int main() 
    { 
     long long int numberofqueries, numberofqueriesdone, shininess; 
     cin >> numberofqueries; 

       long long int shiniestdiamond = 0, numberofsuchdiamonds = 0; 
       string questiontype; 

     while (numberofqueriesdone < numberofqueries) 
      {cin >> questiontype; 
       if (questiontype == "ASK") 
       { 
        if (shiniestdiamond == 0) 
         cout << "fail" << endl; 
        else 
         {cout << shiniestdiamond << " " << numberofsuchdiamonds     << endl;} 

       } 

       if (questiontype == "ADD") 
       { 
        cin >> shininess; 

        if (shininess == shiniestdiamond) 
         numberofsuchdiamonds += 1; 
        else if(shininess > shiniestdiamond) 
         {shiniestdiamond = shininess; 
         numberofsuchdiamonds = 1;} 




       } 


       numberofqueriesdone += 1; 
      } 
    } 

什麼是錯

我看不出有什麼錯我的代碼,將給予一個TLE判決。我相信它最多可以運行10M。

+0

「如果行**開始** ASK」給我聽起來像他們明確期望代碼在讀取其他任何內容之前丟棄行的其餘部分,並且僅測試那些第一個字符。我在您發佈的內容中沒有看到任何此類代碼。 – JSF

+0

我認爲我的解決方案有效,但我不明白爲什麼它會用1 mil指令超過2s –

+0

如果解析輸入的方式不正確,那麼當驅動程序正在等待輸出時,程序將等待輸入,或者沒有更多的投入。駕駛程序然後中止您的TLE程序。所以,如果你認爲**你的解決方案是有效的,並且只是想知道爲什麼它太慢了,那麼你就沒有開放思維。 – JSF

回答

0

你有未定義的行爲,你永遠不會初始化numberofqueriesdone

+0

即使在修復它之後它仍然會給予TLE –

相關問題