Pagini recente » Cod sursa (job #2931660) | Cod sursa (job #2527197) | Cod sursa (job #631427) | Cod sursa (job #1168473) | Cod sursa (job #1707134)
#include <fstream>
using namespace std;
ifstream f ("deque.in");
ofstream g ("deque.out");
int dq[10000005], st, dr, i, a[5000005], n, k, ver, j, k1;
long long s;
int main ()
{
f>>n>>k;
st=dr=5000000;
dq[dr]=1;
st--;
dr++;
f>>a[1];
for (i=2; i<=k; i++)
{
f>>a[i];
if( a[i] >= a[ dq[ dr-1 ] ] )
{
dq[dr]=i;
dr++;
}
else
{
for (j=dr-1; j>st; j-- )
{
if ( a[ dq [ j ] ] < a[i] )
{
ver=j+1;
break;
}
}
if (j==st)
{
ver=st+1;
}
//cout<<"POZITIA "<<ver-5000000<<'\n';
dq[ver]=i;
dr=ver+1;
}
}
//cout<<st<<" "<<dr<<'\n';
/*cout<<st-5000000<<" "<<dr-5000000<<'\n';
for(k1=st; k1<=dr; k1++)
{
cout<<dq[k1]<<" ";
}
cout<<'\n';*/
//cout<<a[ dq [ st+1 ] ]<<'\n';
s+=a[ dq [ st+1 ] ];
for (i=k+1; i<=n; i++)
{
f>>a[i];
if( a[i] >= a[ dq[ dr-1 ] ] )
{
dq[dr]=i;
dr++;
}
else
{
for (j=dr-1; j>st; j-- )
{
if ( a[ dq [ j ] ] < a[j] )
{
ver=i+1;
break;
}
}
if (j==st)
{
ver=st+1;
}
// cout<<"POZITIA "<<ver-5000000<<'\n';
dq[ver]=i;
dr=ver+1;
}
if ( dq [ st + 1 ] < i - k +1 )
{
st++;
}
s+=a[ dq [ st+1 ] ];
//cout<<a[ dq [ st+1 ] ]<<'\n';
/*cout<<st-5000000<<" "<<dr-5000000<<'\n';
for(k1=st; k1<=dr; k1++)
{
cout<<dq[k1]<<" ";
}
cout<<'\n';*/
}
g<<s;
return 0;
}