Pagini recente » Cod sursa (job #694085) | Cod sursa (job #1483964) | Cod sursa (job #239738) | Cod sursa (job #1384984) | Cod sursa (job #38288)
Cod sursa(job #38288)
#include<fstream.h>
int main()
{
long p[50001],sk[50001], maxk[50001];
long i,k,n,s,max,pc,ps,pf;
ifstream fin("secv2.in");
fin>>n>>k;
for(i=1;i<=n;i++) fin>>p[i];
fin.close();
s=0; //se calculeaza in s profitul obtinut prin alegerea primelor k chioscuri
for(i=1;i<=k;i++)
s=s+p[i];
sk[k]=maxk[k]=max=s; //evident, sk[k]=maxk[k]=s, iar ps=1 si pf=k
ps=1;pf=k;
pc=1; //varibila pc retine pozitia de inceput a secventei curente
for (i=k+1;i<=n;i++)
{
sk[i]=sk[i-1]+p[i]-p[i-k]; //se calculeaza si se actualizeaza valorile celor 2 vectori
if(maxk[i-1]+p[i]>sk[i])
maxk[i]=maxk[i-1]+p[i];
else
{
maxk[i]=sk[i];
pc=i-k+1;
}
if (maxk[i]>max) //se actualizeaza, daca este necesar, valoarea maxima a profitului
{
max=maxk[i];
ps=pc;
pf=i;
}
}
ofstream fout("secv2.out");
fout<<ps<<" "<<pf<<" "<<max;
fout.close();
return 0;
}