1

ロボット裁判官は最低だ!次のコードのチャンクを削除した後にのみ、UVAに受け入れられました。

cin >> ntc;
/* extract newline from previous read */
char dummy(0);
cin.get(dummy);
assert( '\n'==dummy );
/* newline extract completes */

それを次のように置き換えます。

cin >> ntc;
getline( cin, inputN ); /* extract remaining '\n' */

交換前に、UVA の名誉あるロボット審査員は次のように判断します。

あなたの提出 .... は評決Time limit exceededで失敗しました。

プログラムは、この問題で許容されるよりも多くの CPU 時間を使用しました。これは、アルゴリズムの速度が十分でないか、無限ループに陥ったことを意味します。

交換後、プログラムの実行には 0.052 秒かかりました。

  1. 置き換えられたコードとどのように関連している可能性がありますか?
  2. UVA ロボット ジャッジが他のコンパイラとどのように異なるかについてのドキュメントはありますか? オンラインジャッジで利用できる機能/方法を知るため。

MinGWを使用しています。

4

1 に答える 1

5

アサートは無限ループを作成できません。

私の推測では、アサートがトリガーされたときに、OS によってジャストインタイムのデバッグ プロンプトが表示されました (「プログラムでエラーが発生しました... [デバッグ] [キャンセル]」)。(申し訳ありませんが、現時点では Windows を実行していないため、実際の文言を確認することはできません)。どちらのボタンも押す人がいなくて、誰かが押すまでプロセスが終了しないため、ロボットはプログラムがまだ実行中であると考えました。

UVAの設定ミスだと思います。ジャストインタイム デバッグを無効にする必要があります。

于 2010-10-02T10:14:34.943 に答える