Pagini recente » Cod sursa (job #1361759) | Cod sursa (job #2299304) | Cod sursa (job #481634) | Cod sursa (job #2712360) | Cod sursa (job #636527)
Cod sursa(job #636527)
#include<iostream>
#include<fstream>
#include<stdio.h>
#define maxn 2000010
using namespace std;
long long T[maxn],Best[maxn];
long long i,s,n,d,k,dr;
#define T (T + 100)
#define Best (Best + 100)
/*
const int maxb = 8192;
char buf[maxb];
int ptr = maxb;
int getNumber()
{
while (buf[ptr] < '0' || '9' < buf[ptr]) {
if (++ptr >= maxb) {
fread(buf, 1, maxb,stdin);
ptr = 0;
}
}
int nr = 0;
while ('0' <= buf[ptr] && buf[ptr] <= '9') {
nr = nr * 10 + buf[ptr] - '0';
if (++ptr >= maxb) {
fread(buf, 1, maxb,stdin);
ptr = 0;
}
}
return nr;
}
*/
int main()
{
freopen("zombie.in", "r", stdin);
freopen("zombie.out", "w", stdout);
/* d=getNumber();
n=getNumber();
k=getNumber();*/
cin>>d>>n>>k;
//cout<<d<<" "<<n<<" "<<k<<"\n";
for ( i=1; i<=n; ++i)
//T[i]=getNumber();
cin>>T[i];
n++;
T[n]=1000000002;
for ( s=1; s<=n; ++s)
{
while ( T[s]+d-1>=T[dr+1] && dr<=n)
{
dr++;
// cout<<T[s]+d-1<<" "<<T[dr]<<" "<<dr<<"\n";
}
//out<<dr<<"@\n";
if ( Best[dr+1]>Best[s]+k || Best[d+1]==0)
Best[dr+1]=Best[s]+k;
if ( Best[s+1]>Best[s]+1 || Best[s+1]==0)
Best[s+1]=Best[s]+1;
}
cout<<Best[n]<<"\n";
return 0;
}