Pagini recente » Cod sursa (job #3033035) | Cod sursa (job #1222175) | Cod sursa (job #2892099) | Cod sursa (job #1260249) | Cod sursa (job #3345483)
import java.io.*;
import java.util.ArrayList;
public class SSM {
static class Task{
private int length;
private final ArrayList<Integer> numbers = new ArrayList<>();
static class Ssm{
private final int sum;
private final int startIdx;
private final int stopIdx;
public Ssm(int sum, int startIdx, int stopIdx){
this.sum = sum;
this.startIdx = startIdx;
this.stopIdx = stopIdx;
}
}
private void read() {
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader("src/ssm.in"));
length = Integer.parseInt(bufferedReader.readLine());
String line = bufferedReader.readLine();
String[] aux = line.split(" ");
for (String s : aux) {
numbers.add(Integer.parseInt(s));
}
bufferedReader.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private void write(Ssm ssm) throws IOException {
try {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("src/ssm.out"));
String toWrite = ssm.sum + " " + ssm.startIdx + " " + ssm.stopIdx;
bufferedWriter.write(toWrite);
bufferedWriter.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public Ssm getResult() {
return SsmSolve();
}
public void solve() throws IOException {
read();
write(getResult());
}
private Ssm SsmSolve() {
ArrayList<Integer> dp = new ArrayList<>();
int sum = 0;
int startIdx = 0;
int stopIdx = 0;
dp.add(numbers.getFirst());
for (int i = 1; i < length; i++) {
if (dp.get(i - 1) >= 0) {
dp.add(dp.get(i - 1) + numbers.get(i));
stopIdx = i;
if (dp.get(i) > sum) {
sum = dp.get(i);
}
} else {
dp.add(numbers.get(i));
startIdx = i + 1;
}
}
return new Ssm(sum, startIdx, stopIdx);
}
}
}