I have a project in which I have to store some values and return some results based on them. The results and stored values are all integers. I have made every variable a long long int so that it will definitely fit the numbers (the array could be as long as 1000000). While I get totally normal values on up to 400000 numbers stored and I get them in low time (0.25 seconds), on 500000 the program just fails to execute. If my antivirus is on, it will even delete the executable file once I try to build or run it. On build though, the program itself will not show any syntax errors. Any ideas?
Code below:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream TextIn;
ofstream TextOut;
long long int N, i=1, sum=0;
TextIn.open("share.in", ios::in);
TextIn >> N;
long long int A[N];
for (i=1; i<=N; i++) {
TextIn >> A[i];
sum=sum+A[i];
}
TextIn.close();
long long int sum1c2=0, sum1c1=0;
i=0;
do {
i=i+1;
sum1c1=sum1c1+A[i];
} while ((sum1c1<=2+sum/3) && (i<N-2));
sum1c2=sum1c1-A[i];
long long int sum2c1c1=0, sum2c1c2=0, sum2c2c1=0, sum2c2c2=0, j=i-1;
do {
j=j+1;
sum2c1c1=sum2c1c1+A[j];
} while ((sum2c1c1<=2+sum/3) && (j<N-1));
sum2c1c2=sum2c1c1-A[j];
j=i;
do {
j=j+1;
sum2c2c1=sum2c2c1+A[j];
} while ((sum2c2c1<=2+sum/3) && (j<N-1));
sum2c2c2=sum2c2c1-A[j];
long long int sum3c1, sum3c2, sum3c3, sum3c4;
sum3c1=sum-sum1c1-sum2c2c1;
sum3c2=sum-sum1c1-sum2c2c2;
sum3c3=sum-sum1c2-sum2c1c1;
sum3c4=sum-sum1c2-sum2c1c2;
long long int max1=0, max2=0, max3=0, max4=0;
if (sum1c1>sum2c2c1) {
if (sum1c1>sum3c1){
max1=sum1c1;
} else {
max1=sum3c1;
}
} else {
if (sum2c2c1>sum3c1) {
max1=sum2c2c1;
} else {
max1=sum3c1;
}
}
if (sum1c1>sum2c2c2) {
if (sum1c1>sum3c2) {
max2=sum1c1;
} else {
max2=sum3c2;
}
} else {
if (sum2c2c2>sum3c2) {
max2=sum2c2c2;
} else {
max2=sum3c2;
}
}
if (sum1c2>sum2c1c1) {
if (sum1c2>sum3c3) {
max3=sum1c2;
} else {
max3=sum3c3;
}
} else {
if (sum2c1c1>sum3c3) {
max3=sum2c1c1;
} else {
max3=sum3c3;
}
}
if (sum1c2>sum2c1c2) {
if (sum1c2>sum3c4) {
max4=sum1c2;
} else {
max4=sum3c4;
}
} else {
if (sum2c1c2>sum3c4) {
max4=sum2c1c2;
} else {
max4=sum3c4;
}
}
long long int final_max;
if (max1<=max2 && max1<=max3 && max1<=max4) {
final_max = max1;
} else if (max2<=max1 && max2<=max3 && max2<=max4) {
final_max = max2;
} else if (max3<=max1 && max3<=max2 && max3<=max4) {
final_max = max3;
} else {
final_max = max4;
}
TextOut.open("share.out", ios::out);
TextOut << final_max;
TextOut.close();
return 0;
}