2016-03-28 7 views
1
int main() 
{ 

    long int n,x,cost[100]; 
    cin>>n>>x; 
    for(int i=0;i<n;i++) 
     cin>>cost[i]; 

    int i=0,flag=0,s=0,first; 
    first=cost[0]; 
    while(i<n) 
    { 
     s+=cost[i]; 
     if(s>x){ 
      s-=first; 
      first++; 
     } 
     if(s==x) 
     { 
      flag=1; 
      break; 
     } 
     i++; 
    } 
    if(flag==0) cout<<"no"; 
    else cout<<"yes"; 
} 

Ideone demoこのコードは、このコードをコードブロックで完全に実行されているが、ideone.com

にランタイムエラーを与えているがhackerearthから問題となっています。問題の名前は「プラテクと彼の友人」 助けてください。

+3

がある、唯一の入力は、「ファイルの終わり」であれば何が起こるかを考えてみ逃しましたIdeoneに標準入力がないとどうなりますか?変数にはどのような価値があると思いますか? –

+1

http://ideone.com/WUk0dE – uSeemSurprised

+0

Btw、これを* 1つの簡単なテストケース以上で試しましたか? – WhozCraig

答えて

0

私はこれが唯一のエラーであるかどうかわからないですが、あなたはいつも(あなたがそれらを使用して終了していない限り)その整数の変数は賢明なデフォルトがlong int n = 0, x = 0かもしれない。この場合 に割り当てられていることを確認する必要があります。また

、それは(原因EOFに)ストリームから読み取ることができない場合cin>>nが正常に動作しません、それは前の操作よりもtrueを返す場合、あなたはおそらく(、cin.fail()を使用し、それが成功したことを、読み取りを行った後にチェックする必要がありますそれ以前のもの)が失敗しました。

私は実際にストリームの可能性を扱う覚えていませんが前に失敗読んで、私は間違っている可能性があります/何か

関連する問題