Pagini recente » Cod sursa (job #1857472) | Cod sursa (job #2767360) | Cod sursa (job #3168372) | Cod sursa (job #584508) | Cod sursa (job #1293461)
import java.util.*;
import java.io.*;
public class Main {
static class MaxPos {
int start;
int stop;
int max;
public MaxPos(int start, int stop, int max) {
this.start = start;
this.stop = stop;
this.max = max;
}
@Override
public String toString() {
return max + " " + (start+1) + " " + (stop+1);
}
public int len() {
return stop - start;
}
public void setMaxPos(int max, int start, int stop) {
this.max = max;
this.start = start;
this.stop = stop;
}
public void setMaxPos(MaxPos other) {
max = other.max;
start = other.start;
stop = other.stop;
}
}
public static void main(String[] args) throws IOException {
Scanner scn = new Scanner(new FileInputStream("xormax.in"));
int N = scn.nextInt();
int[] xorSeq = new int[N];
for (int i = 0; i < xorSeq.length; i++) {
xorSeq[i] = scn.nextInt();
}
scn.close();
MaxPos maxSoFar = new MaxPos(1, 1, xorSeq[0]);
MaxPos maxEndingHere = new MaxPos(1, 1, xorSeq[0]);
for (int i = 1; i < xorSeq.length; i++) {
if ((maxEndingHere.max ^ xorSeq[i]) > xorSeq[i]) {
maxEndingHere.max = maxEndingHere.max ^ xorSeq[i];
maxEndingHere.stop = i;
}
else if ((maxEndingHere.max ^ xorSeq[i]) < xorSeq[i]) {
maxEndingHere.setMaxPos(xorSeq[i], i, i);
}
if ((maxSoFar.max < maxEndingHere.max) ||
(maxSoFar.max == maxEndingHere.max && maxSoFar.len() > maxEndingHere.len())) {
maxSoFar.setMaxPos(maxEndingHere);
}
}
BufferedWriter bw = new BufferedWriter(new FileWriter("xormax.out"));
bw.write(maxSoFar.toString());
bw.close();
}
}