Pagini recente » Cod sursa (job #437696) | Cod sursa (job #874354) | Cod sursa (job #2463602) | Cod sursa (job #2714037) | Cod sursa (job #1047996)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
const int dim = 1<<20;
int D, N, K, C, V[dim];
int main()
{
ifstream cin ("zombie.in");
ofstream cout ("zombie.out");
cin >> D >> N >> K;
for (int i = 1; i <= N; i++)
{
cin >> V[i];
}
queue <int> Q;
Q.push (V[1]);
int znext = 2;
while (!Q.empty())
{
while (znext <= N && V[znext] - Q.front() + 1 <= D)
Q.push (V[znext++]);
if (Q.size() >= K)
{
while (!Q.empty()) Q.pop ();
C += K;
}
else
{
C++;
Q.pop ();
while (Q.size() > 1 && (znext > N || V[znext] - Q.front() + 1 > D))
{
C++;
Q.pop ();
}
}
if (znext <= N)
Q.push (V[znext++]);
}
cout << C;
return 0;
}