Cod sursa(job #1047996)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 5 decembrie 2013 02:51:55
Problema Zombie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#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;
}