AcWing 128. 编辑器(Java)
原题链接
简单
作者:
peilin
,
2020-07-05 20:22:27
,
所有人可见
,
阅读 665
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
while (in.nextToken() != StreamTokenizer.TT_EOF) {
int n = (int) in.nval;
Deque<Integer> numStackLeft = new ArrayDeque<>(n);
Deque<Integer> numStackRight = new ArrayDeque<>(n);
int[] sums = new int[n + 1];
int[] sumsMax = new int[n + 1];
sums[0] = 0;
sumsMax[0] = Integer.MIN_VALUE;
while (n-- > 0) {
in.nextToken();
String c = in.sval;
switch (c) {
case "I":
in.nextToken();
numStackLeft.push((int) in.nval);
sums[numStackLeft.size()] = sums[numStackLeft.size() - 1] + numStackLeft.peek();
sumsMax[numStackLeft.size()] = Math.max(sumsMax[numStackLeft.size() - 1], sums[numStackLeft.size()]);
break;
case "D":
if (!numStackLeft.isEmpty()) {
numStackLeft.pop();
}
break;
case "L":
if (!numStackLeft.isEmpty()) {
numStackRight.push(numStackLeft.pop());
}
break;
case "R":
if (!numStackRight.isEmpty()) {
numStackLeft.push(numStackRight.pop());
sums[numStackLeft.size()] = sums[numStackLeft.size() - 1] + numStackLeft.peek();
sumsMax[numStackLeft.size()] = Math.max(sumsMax[numStackLeft.size() - 1], sums[numStackLeft.size()]);
}
break;
case "Q":
in.nextToken();
int k = (int) in.nval;
out.println(sumsMax[k]);
break;
}
}
out.flush();
}
}
}