Cod sursa(job #1459934)

Utilizator GinguIonutGinguIonut GinguIonut Data 11 iulie 2015 12:24:55
Problema Zombie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#define dim 1000001
using namespace std;
ifstream fin("zombie.in");
ofstream fout("zombie.out");
int dp[dim],dist[dim],D,N,K,INF,i,sol;
int Search(int val)
{
    int st=1;
    int dr=i;
    int mijl;
    while(st<=dr)
    {
        mijl=st+(dr-st)/2;
        if(dist[mijl]<=val)
        {
            dr=mijl-1;
            sol=mijl;
        }
        else
            st=mijl+1;
    }
    return (sol-1);
}
int main()
{
    fin>>D>>N>>K;
    INF = 1 << 30;
    for(i=1;i<=N;i++)
    {
        fin>>dist[i];
        dp[i]=INF;
    }
    for(i=1;i<=N;i++)
        dp[i]=min(dp[i-1]+1,dp[Search(dist[i]-D+1)]+K);
    fout<<dp[N];
    return 0;
}