Pagini recente » Cod sursa (job #1640393) | Cod sursa (job #1326557) | Cod sursa (job #1612417) | Cod sursa (job #477558) | Cod sursa (job #1142157)
#include <fstream>
using namespace std;
ifstream f("secv2.in");
ofstream g("secv2.out");
int n,k,v[50001],s[50001];
struct {int beg, end;}a[50001];
int main()
{
f>>n>>k;
int j,smax=-1250000000,i,pc,sc,umax,pmax;
s[0]=0;
for(i=1;i<=k;i++){
f>>v[i];
s[i]=s[i-1]+v[i];
}
a[k].beg=1;
a[k].end=k;
sc = smax = s[k];
pc = pmax = 1;
umax = k;
for(i=k+1;i<=n;i++){
f>>v[i];
s[i] = s[i-1] + v[i];
if (s[i] - s[i - k] > sc + v[i])
{
pc = i - k + 1;
sc = s[i] - s[i - k];
}
else
{
sc += v[i];
}
if (sc > smax)
{
smax = sc;
pmax = pc;
umax = i;
}
/*if (s[i])
if(s[i-1]+v[i]<=s[i-1]+v[i]-v[i-k]){
a[i].beg=i-k+1;
a[i].end=i;
s[i]=s[i-1]+v[i]-v[i-k];
}
else{
a[i].beg=a[i-1].beg;
a[i].end=i;
s[i]=s[i-1]+v[i];
}
/*if(suma ultimilor k...){
s=0;
ind=i;
}
s+=x;
if(s>smax && i-ind+1>=k){
smax=s;
beg=ind;
end=i;
}
*/
}
g<<pmax<<" "<<umax<<" "<<smax<<"\n";
return 0;
}