問題を解決しようとしていますが、メモリ制限を取得すると、出力前にバッファリングの原因になると思います。整数を使用しているのですが、最小限のメモリ使用量で出力するにはどうすればよいですか?今私はPrintWriterを使用しています。他にもっと良い方法はありますか?
import java.io.*;
import java.util.*;
class stack_ {
public char index;
public int value;
public stack_(char ind, int val) {
index = ind;
value = val;
}
}
public class timous {
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer( new BufferedReader (new InputStreamReader(System.in)) );
Vector<stack_> numbers = new Vector<stack_>();
PrintWriter out = new PrintWriter(System.out);
in.nextToken();
char num = (char)in.nval;
for (char i = 0, k; i<num; i++) {
in.nextToken();
if (in.sval.equals("POP")) {
k = (char)(numbers.size()-1);
in.nextToken();
while (numbers.elementAt(k).index!=(char) in.nval)
k--;
out.println(numbers.elementAt(k).value);
numbers.removeElementAt(k);
}
else {
in.nextToken();
k = (char)in.nval;
in.nextToken();
numbers.add(new stack_(k, (int) in.nval));
}
}
out.flush();
}
}
メモリ制限テスト3; 時間0.078; メモリ834KB
import java.io.*;
import java.util.*;
public class timous {
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer( new BufferedReader (new InputStreamReader(System.in)) );
int[] numbers_int = new int[20000];
char[] numbers_char = new char[20000];
PrintWriter out = new PrintWriter(System.out,true);
in.nextToken();
char num = (char)in.nval;
for (char i = 0, k, cur=0; i<num; i++) {
in.nextToken();
if (in.sval.charAt(1)=='O') {
k = cur;
k--;
in.nextToken();
while (numbers_char[k]!=(char) in.nval)
k--;
out.println(numbers_int[k]);
for (; k<19999; k++){
numbers_int[k] = numbers_int[k+1];
numbers_char[k] = numbers_char[k+1];
}
cur--;
}
else {
in.nextToken();
numbers_char[cur] = (char)in.nval;
in.nextToken();
numbers_int[cur] = (int)in.nval;
cur++;
}
}
}
}