2015-11-05 94 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 –

相关问题