Cod sursa(job #2279668)

Utilizator topala.andreiTopala Andrei topala.andrei Data 9 noiembrie 2018 21:04:51
Problema Subsecventa de suma maxima Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>

int sushi(int *seq_and, int *seq_or, int x) {
	*seq_and &= x;
	*seq_or |= x;
	return *seq_and + *seq_or; 
}
int main() {
	int N, x, suma = 0, seq_and = (1<<30) - 1, seq_or = 0, sum_max = 0;
	int start = 1, imax = 1, jmax = 1;
	freopen("sushi.in","r",stdin);
	freopen("sushi.out","w",stdout);
	scanf("%d", &N);
	for (int i = 1; i <= N; i++) {
		scanf("%d", &x);
		if (suma < 2 * x) {
			suma = 2 * x;
			seq_and = x;
			seq_or = x;
			start = i;
		} else {
			suma = sushi(&seq_and, &seq_or, x);
		}
		if (sum_max < suma) {
			imax = start;
			jmax = i;
			sum_max = suma;
		}
	}
	printf("%d %d %d\n", imax, jmax, sum_max);
	return 0;
}