Pagini recente » Cod sursa (job #2090277) | Cod sursa (job #56010) | Cod sursa (job #1140020) | Cod sursa (job #2734738) | Cod sursa (job #887674)
Cod sursa(job #887674)
#include<cstdio>
#include<deque>
#define NMAX 100005
using namespace std;
deque <int> Q;
int d,n,k;
int cost;
int dist[NMAX];
void read ( void )
{
freopen("zombie.in","r",stdin);
scanf("%d%d%d",&n,&d,&k);
for(int i(1); i <= n ; ++i )
scanf("%d",&dist[i]);
fclose(stdin);
}
void solve ( void )
{
Q.front()=0;
for(int i(1); i <= n ; ++i)
{
int sum=0;
while(Q.size() > d )
Q.pop_front();
if( dist[i]-dist[Q.front()] > d )
{
for(int ii(1); ii <= Q.size(); ++ii)
sum++;
if( sum > k )
cost+=k;
else
cost+=sum;
while ( dist[i]-dist[Q.front()] > d || Q.size())
{
Q.pop_front();
if(Q.size() == 0)
break;
}
Q.push_back(i);
}
else
{
Q.push_back(i);
if(Q.size() >= d-1 )
{
for(int ii(1); ii <= Q.size(); ++ii)
sum++;
if( sum > k )
cost+=k;
else
cost+=sum;
}
}
}
}
void write ( void )
{
freopen("zombie.out","w",stdout);
printf("%d",cost);
fclose(stdout);
}
int main()
{
read();
solve();
write();
return 0;
}