Pagini recente » Cod sursa (job #2933021) | Cod sursa (job #2240478) | Cod sursa (job #2228063) | Cod sursa (job #2983925) | Cod sursa (job #2862135)
#include <fstream>
using namespace std;
ifstream fin("secv2.in");
ofstream fout("secv2.out");
int v[50001];
int main()
{
int n, k, minim, pozmin, pozinc, pozfin, sumamax = -1e9;
int x;
fin >> n >> k;
for(int i = 1; i <= n; ++i)
{
fin >> x;
v[i] = v[i - 1] + x;/// calculam sirul de sume partiale
}
minim = 0;
pozmin = 0;
for( int i = 1; i <= k - 1; ++i)
if(v[i] < minim)
{
minim = v[i];
pozmin = i;
}
for(int i = k; i <= n; ++i)
{
if(v[i] - minim > sumamax && i - pozmin >= k)///secventa are cel putin lungimea k
{
sumamax = v[i] - minim;/// minim = cea mai mica suma partiala pana la apoz i
pozinc = pozmin + 1;
pozfin = i;
}
if(i >= k && v[i] - v[i - k] > sumamax)///diferente pe sume partiale
{
sumamax = v[i] - v[i - k];
pozinc = i - k + 1;
pozfin = i;
}
if(v[i] < minim)
{
minim = v[i];
pozmin = i;
}
}
fout << pozinc << ' ' << pozfin << ' ' << sumamax << '\n';
return 0;
}