Pagini recente » Cod sursa (job #945836) | Cod sursa (job #818632) | Cod sursa (job #1928656) | Cod sursa (job #1328830) | Cod sursa (job #887712)
Cod sursa(job #887712)
#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;
}