Pagini recente » Cod sursa (job #360908) | Cod sursa (job #1021284) | Cod sursa (job #77654) | Cod sursa (job #2396555) | Cod sursa (job #2680261)
import java.io.*;
import java.util.Scanner;
public class Main {
private static int n;
private static int[] array;
public static void main(String[] args) {
File inputFile = new File("ssm.in");
File outputFile = new File("ssm.out");
try {
FileInputStream inputStream = new FileInputStream(inputFile);
Scanner scanner = new Scanner(inputStream);
FileOutputStream outputStream = new FileOutputStream(outputFile);
PrintWriter writer = new PrintWriter(outputStream);
n = scanner.nextInt(); // number of letters in 1st
array = new int[n];
int[] longestsequence = new int[n];
for (int i = 0; i < n; i++) {
longestsequence[i] = 1;
array[i] = scanner.nextInt();
}
int maxsum = array[0];
int maxposition = 0;
int maxwindowsize = 1;
int currentsum = maxsum;
int windowsize = 1;
for (int i = 0; i < n - windowsize; ) {
if (array[windowsize + i] + currentsum > array[windowsize + i]) {
currentsum = currentsum + array[windowsize + i];
windowsize++;
}
else
{
i = windowsize + i;
currentsum = array[i];
windowsize = 1;
}
if (currentsum == maxsum)
if (maxwindowsize > windowsize) {
maxwindowsize = windowsize;
maxposition = i;
}
if (currentsum > maxsum) {
maxwindowsize = windowsize;
maxposition = i;
maxsum = currentsum;
}
}
// for (int i = 0; i < n - windowsize; ) {
// if (array[windowsize + windowstartposition] + currentsum > maxsum) {
// windowsize++;
// maxsum += array[windowsize + windowstartposition];
// maxposition = i;
// }
// else
// {
// i++;
// windowstartposition++;
// for (int j = windowstartposition; j < windowsize + windowstartposition; j++)
// currentsum += array[j];
// }
// }
String sequence = maxsum + " ";
sequence += (maxposition + 1) + " ";
sequence += maxwindowsize + maxposition;
writer.print(sequence);
inputStream.close();
writer.close();
outputStream.close();
} catch (IOException e) {
}
}
}