Pagini recente » Cod sursa (job #1908470) | Cod sursa (job #3003019) | Cod sursa (job #1912655) | Cod sursa (job #2980658) | Cod sursa (job #2766684)
#include <bits/stdc++.h>
#define filePrint(file, x) file << x
#define fileRead(x, file) file >> x
#define print(x) filePrint(std::cout, x)
#define read(x) fileRead(x, std::cin)
#define debugPrint(x) print(#x << ": " << x << '\n')
#define MAXNUMS 100000
#define __NAME_OF_THE_FILE__ "xormax"
std::ifstream fin(__NAME_OF_THE_FILE__ ".in");
std::ofstream fout(__NAME_OF_THE_FILE__ ".out");
size_t n;
size_t global_max;
size_t start;
size_t end;
std::array<unsigned int, 10000> arr = {0};
void setup();
void solve();
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
setup();
solve();
return 0;
}
void setup() {
fileRead(n, fin);
for (size_t i = 0; i < n; i++) {
fileRead(arr[i], fin);
}
}
void solve() {
// we find the greatest sum by using Kadalane's approach
/*
local_max = 9;
global_max = 9; 3 vs 9
1 -3 -8 4 2 3
^
\start
\end
\flag
*/
size_t local_max = 0;
size_t flag = 0;
for (size_t i = 0; i < n; i++) {
local_max = std::max<unsigned int>(arr[i], arr[i] ^ local_max);
if (local_max >= global_max) {
global_max = local_max;
if (i - flag == 1) {
end++;
flag++;
} else {
start = i;
end = i;
flag = i;
}
}
}
filePrint(fout, global_max << ' ' << start + 1 << ' ' << end + 1);
}