Răspuns :
#include<cstdio>
#include<deque>
#define MAX_N 100000
using namespace std;
int v[MAX_N+1], n, k;
deque<int>deck;
int main()
{
int i, smax, sum, Begin, End;
FILE *fin, *fout;
fin = fopen("secvk.in","r");
fout = fopen("secvk.out","w");
fscanf(fin,"%d%d",&n,&k);
for(i=1; i<=n; i++)
fscanf(fin,"%d",&v[i]);
smax = -1;
sum = 0;
Begin = End = 0;
for(i=1; i<=n; i++)
{
if(i <= k)
{
sum += v[i];
deck.push_back(v[i]);
if(i == k && sum > smax)
{
smax = sum;
End = k;
Begin = End - k + 1;
}
}
else
{
sum -= deck.front();
sum += v[i];
deck.pop_front();
deck.push_back(v[i]);
if(sum > smax)
{
smax = sum;
End = i;
Begin = End - k + 1;
}
}
}
for(i=Begin; i<=End; i++)
fprintf(fout,"%d ",v[i]);
fprintf(fout,"\n");
fclose(fout);
fclose(fin);
return 0;
}
#include<deque>
#define MAX_N 100000
using namespace std;
int v[MAX_N+1], n, k;
deque<int>deck;
int main()
{
int i, smax, sum, Begin, End;
FILE *fin, *fout;
fin = fopen("secvk.in","r");
fout = fopen("secvk.out","w");
fscanf(fin,"%d%d",&n,&k);
for(i=1; i<=n; i++)
fscanf(fin,"%d",&v[i]);
smax = -1;
sum = 0;
Begin = End = 0;
for(i=1; i<=n; i++)
{
if(i <= k)
{
sum += v[i];
deck.push_back(v[i]);
if(i == k && sum > smax)
{
smax = sum;
End = k;
Begin = End - k + 1;
}
}
else
{
sum -= deck.front();
sum += v[i];
deck.pop_front();
deck.push_back(v[i]);
if(sum > smax)
{
smax = sum;
End = i;
Begin = End - k + 1;
}
}
}
for(i=Begin; i<=End; i++)
fprintf(fout,"%d ",v[i]);
fprintf(fout,"\n");
fclose(fout);
fclose(fin);
return 0;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!