No.3051 cracked

レベル : / 実行時間制限 : 1ケース 1.024秒 / メモリ制限 : 200 MB / リアクティブ問題 (詳しくはこちら
タグ : / 解いたユーザー数 9
作問者 : maimai / テスター : buyohbuyoh
2 ProblemId : 2675 / 出題時の順位表

note

これは yukicoder April fool contest 2019 の問題として作問されました.

問題文

入力から提出したソースコードが与えられます.
ただし,文字コード32以上126以下のある 1byte については,異なる文字コード32以上126以下の 1byte に書き換えられています.

書き換えられた位置(0-index・byte単位で)と書き換わる前の文字,書き換わった後の文字を標準出力に出力してください.


ソースコードが3000byteを超える場合, ソースコード中に書き換えられる文字が存在しない場合(例えば改行だけ等)は,
文字列WAを入力として与えた後,WrongAnswerとなります.

文字コード33以上126以下の文字を次に列挙します.文字コード32は半角スペースです.

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

また,プログラムはCかC++14で作成してください.
それ以外の言語(Ruby,Pythonなど)は WrongAnswer となります.

提出するプログラムは,次のコンパイルを実行した時に,どちらかが終了コード0を返す必要があります.
どちらも終了コードを0を返す場合,C言語のコードと提出したと解釈されます.

gcc7 -x c -std=c11 _filename_
g++ -x c++ _filename_

23:58追記:C++のコンパイルオプションから -std=gnu++14 を除外しました


入力

文字コード32以上126以下のある 1byte について,異なる文字コード32以上126以下の 1byte に書き換えられた,提出したソースコードが与えられます.

出力

1行目に,書き換えられた位置を0-index・byte単位で出力してください.
2行目に,書き換わる前の文字を"で囲んで出力してください.
3行目に,書き換わった後の文字を"で囲んで出力してください.
最後の改行はあっても無くても構いません.

ヒント

リアクティブ問題として実装されているため,通常問題では起きないがリアクティブでは発生するようなWA,TLEが存在するかもしれません.
例えば,EOFが来ないらしく,C言語でwhile(getchar() != -1);と書くとTLEします.

提出したプログラムの終了コードが0以外になってもREを返すとは限りません.

サンプル

サンプル1
例えば,次のコードを提出したとします.
main(){
  printf("10\n\"p\"\n\"m\"");
}
ジャッジによって次のように書き換えられたとします.この書き換えられたコードが標準入力から与えられます.
main(){
  mrintf("10\n\"p\"\n\"m\"");
}
pからmに書き換わりました.
また,m,a,i,n,(,),{,改行,半角SP,半角SP,p,...から,0-indexedで10byte目が書き換えられていると分かります.
よって,次を出力しなければなりません.
10
"p"
"m"
提出ページヘ
下のフォームでの入力は、テキストボックスにフォーカスがない場合は、(Onにしている場合)ショートカットキー・スマートサブミットの影響を受けるので、必要なら提出ページに遷移してください。

言語
問題によって提出できない言語があります。参考
ソースコード
ソースコードのテキストボックスに文字がある場合はファイルは無視されます。
テキストボックスで提出するとCR(\r)が除去されますが、ファイルで提出すると除去されません。