Pagini recente » Istoria paginii runda/simulare_nu_shimulare | Statistici Tira Catalin (tiracata) | Cod sursa (job #804774) | Cod sursa (job #137731) | Cod sursa (job #2910130)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define Max(a, b) ((a) > (b) ? (a) : (b))
#define maxN 6000000
int S[maxN], N;
int main()
{
FILE *ssm_in, *ssm_out;
int i, start, stop, index, sum, best_sum;
ssm_in = fopen("ssm.in", "r");
ssm_out = fopen("ssm.out", "w");
// Citirea din fisier
fscanf(ssm_in, "%d\n", &N);
if (N < 1 || N > maxN) {
printf("\nVOLUMUL DE DATE NU SE AFLA IN LIMITELE IMPUSE\n");
exit(0);
}
for (i = 1; i <= N; i++)
fscanf(ssm_in, "%d ", &S[i]);
sum = 0;
best_sum = 1 << 31; // Max neg int value
index = 1;
for (i = 1; i <= N; i++) {
if (sum < 0) { // Daca suma subsirului este negativa atunci vom sari peste ea
sum = S[i];
//printf("\n[%d]new sum = %d",i, sum);
index = i;
}
else {
sum += S[i];
//printf("\n[%d] sum = %d",i, sum);
}
if (best_sum < sum) {
//printf("\n[%d]best sum: %d; %d - %d",i, sum, index, i);
best_sum = sum;
start = index;
stop = i;
}
}
fprintf(ssm_out, "%d %d %d", best_sum, start, stop);
fclose(ssm_in);
fclose(ssm_out);
return 0;
}