Cod sursa(job #887712)

Utilizator superman_01Avramescu Cristian superman_01 Data 24 februarie 2013 00:42:15
Problema Zombie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include<cstdio>
#include<fstream>
#include<deque>
 
 
#define NMAX 100005
using namespace std;
 
deque <int> Q;
ifstream f("zombie.in");
ofstream g("zombie.out");
int d,n,k;
int cost;
int dist[NMAX];
 
void read ( void )
{
    f>>d>>n>>k;
    for(int i(1); i <= n ; ++i )
        f>>dist[i];
    f.close();
}
 
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 )
{
     
    g<<cost;
    g.close();
}
 
 
int main()
{
    read();
    solve();
    write();
    return 0;
     
     
}