Pagini recente » Cod sursa (job #1293059) | Cod sursa (job #384532) | Cod sursa (job #1299838) | Cod sursa (job #2245464) | Cod sursa (job #3241258)
#include <fstream>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
//-----------------------------------------------
int n, s = 0, maxim = -2147483648, start, End;
//------------------------------------------------------------------------------------------
void read(int t[])
{
for (int i = 0; i < n; i++)
{
in >> t[i];
}
}
//------------------------------------------------------------------------------------------
void first(int t[], int n)
{
for (int i = 0; i < n; i++)
{
// in >> t[i];
for (int j = i; j < n; j++)
{
for (int k = i; k <= j; k++)
{
s += t[k];
if (s > maxim)
{
maxim = s;
start = i + 1;
End = k + 1;
}
}
s = 0;
}
}
}
//------------------------------------------------------------------------------------------
void second(int t[])
{
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
s += t[j];
if (s > maxim)
{
maxim = s;
start = i + 1;
End = j + 1;
}
}
s = 0;
}
}
//------------------------------------------------------------------------------------------
// FIXME:valszeg nem megy i = 0 es j = 0 ra egyszere
void second2(int t[])
{
int subtotal[n] = {};
in >> t[0];
subtotal[0] = t[0];
for (int i = 1; i < n; i++)
{
in >> t[i];
subtotal[i] = subtotal[i - 1] + t[i];
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < i; j++)
{
s = subtotal[i] - subtotal[j];
if (s > maxim)
{
maxim = s;
start = j + 2;
End = i + 1;
}
}
s = 0;
}
}
//------------------------------------------------------------------------------------------
void third(int t[])
{
int subtotal[n] = {}, minSub = 2147483648;
in >> t[0];
subtotal[0] = t[0];
for (int i = 1; i < n; i++)
{
in >> t[i];
subtotal[i] = subtotal[i - 1] + t[i];
}
for (int i = 0; i < n; i++)
{
minSub = min(minSub, subtotal[i]);
}
}
//------------------------------------------------------------------------------------------
void third2(int t[])
{
}
//------------------------------------------------------------------------------------------
int main()
{
in >> n;
int *t = new int[n];
for (int i = 0; i < n; i++)
{
in >> t[i];
}
second2(t);
out << maxim << " " << start << " " << End;
return 0;
}