Cod sursa(job #2777640)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 23 septembrie 2021 19:54:21
Problema Zombie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>
#define MAXN 1000000

using namespace std;

ifstream fin  ("zombie.in");
ofstream fout ("zombie.out");

int d, n, k;
int st, md, dr;
int v[MAXN+5], dp[MAXN+5];
long long suma[MAXN+5];

int main (){
    fin>>d>>n>>k;
    for(int i=1; i<=n; i++)
        fin>>v[i];

    for(int i=1; i<n; i++){
        v[i] = v[i+1] - v[i];
        suma[i] = suma[i-1] + v[i];
    }
    n--;

    dp[1]=1;
    for(int i=2; i<=n; i++){
        dp[i]=dp[i-1]+1;

        st=1;
        dr=i;
        while(st <= dr){
            md=(dr-st)/2+st;
            if(suma[i] - suma[md-1] < d){
                dp[i]=min(dp[i], dp[md-1] + k);
                st=md+1;
            }else
                dr=md-1;
        }
    }

    fout<<dp[n];
    return 0;
}
/**
5 5 2
1 10 11 12 13
 9  1  1  1
 1  2  3  3


10 3
1 1 1


**/