非常に高速な入出力が必要な問題を解決しています。より正確には、入力データ ファイルは最大 15 MB になります。整数値を読み取り/印刷する高速な方法はありますか。
注:役立つかどうかはわかりませんが、入力ファイルの形式は次のとおりです。
- 1 行目: 数値 n
- 行 2..n+1: 3 つの数値 a、b、c。
- n+2 行目: 数値 r
- 行 n+3..n+4+r: 4 つの数字 a、b、c、d
注2:入力ファイルはstdin
.
編集:次のようなものは十分に高速ではありません:
void fast_scan(int &n) {
char buffer[10];
gets(buffer);
n=atoi(buffer);
}
void fast_scan_three(int &a,int &b,int &c) {
char buffval[3][20],buffer[60];
gets(buffer);
int n=strlen(buffer);
int buffindex=0, curindex=0;
for(int i=0; i<n; ++i) {
if(!isdigit(buffer[i]) && !isspace(buffer[i]))break;
if(isspace(buffer[i])) {
buffindex++;
curindex=0;
} else {
buffval[buffindex][curindex++]=buffer[i];
}
}
a=atoi(buffval[0]);
b=atoi(buffval[1]);
c=atoi(buffval[2]);
}