Using Brute Force if there is no limit for time.
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85695
Problem - D
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Main {
// Scanner in = new Scanner(System.in);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
private BigInteger[] biHolder;
public static void main(String[] args) {
try {
Main context = new Main();
context.fMain();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void fMain() throws Exception {
int n, t;
int[] iTempA = fReadIntArray();
n = iTempA[0];
t = iTempA[1];
biHolder = fReadBigIntArray();
//Debug
// for(int i=0;i<biHolder.length;i++){
alert("Got: biHolder["+i+"]: "+biHolder[i]);
// }
for (int j = 0; j < t; j++) {
String sTemp=br.readLine().trim();
if(sTemp.equals("")){
sTemp=br.readLine().trim();
// System.out.println("Read line is blank!");
}
String[] sTempA = sTemp.split(" ");
if (sTempA[0].startsWith("Q")) {
int iStart = Integer.valueOf(sTempA[1])-1;
int iEnd = Integer.valueOf(sTempA[2])-1;
BigInteger out = BigInteger.ZERO;
for (int i = iStart; i <= iEnd; i++) {
out=out.add(biHolder[i]);
}
System.out.println(out);
} else if (sTempA[0].startsWith("C")) {
int iStart = Integer.valueOf(sTempA[1])-1;
int iEnd = Integer.valueOf(sTempA[2])-1;
int iNum = Integer.valueOf(sTempA[3]);
for (int i = iStart; i <= iEnd; i++) {
biHolder[i]=biHolder[i].add(new BigInteger(String.valueOf(iNum)));
}
}else{
// alert("Not Q, Not C");
}
}
}
// private int[] fReadIntArray(int length) throws IOException {
// int[] iRes = new int[length];
// for (int i = 0; i < length; i++) {
// iRes[i] = in.nextInt();
// }
// return iRes;
// }
private int[] fReadIntArray() throws Exception {
String temp = br.readLine().trim();
String[] sTempA = temp.split(" ");
int[] iRes = new int[sTempA.length];
for (int i = 0; i < sTempA.length; i++) {
iRes[i] = Integer.valueOf(sTempA[i]);
}
return iRes;
}
private BigInteger[] fReadBigIntArray() throws Exception {
String sTemp=br.readLine().trim();
if(sTemp.equals("")){
sTemp=br.readLine().trim();
// System.out.println("Read line ssis blank!");
}
String[] sTempA = sTemp.split(" ");
BigInteger[] biRes = new BigInteger[sTempA.length];
for (int i = 0; i < sTempA.length; i++) {
biRes[i] = new BigInteger(sTempA[i]);
}
return biRes;
}
// private BigInteger[] fReadBigIntArray(int length) throws Exception {
// BigInteger[] biRes = new BigInteger[length];
//
// for (int i = 0; i < length; i++) {
// biRes[i] = in.nextBigInteger();
// }
// return biRes;
// }
// private void alert(String s){
// System.out.println(s);
// }
}