Cod sursa(job #887675)

Utilizator superman_01Avramescu Cristian superman_01 Data 23 februarie 2013 23:54:53
Problema Zombie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 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>>n>>d>>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;
	
	
}