君はまるで砂漠に咲く、一輪の花。

僕はその花に引き寄せられる蝶。

Codeforces Beta Round #11

はい。

A. Increasing Sequence

constructive algorithms,implementation,math

ざっくりと大意

・右に行くに従って増加するべき数列が与えられるらしい。 ・増加してない場合はdを行い、最小で何回か。

方針のようなもの

・たぶんコレ前に見た切り上げ除算を応用すればだと思う。 http://qiita.com/clarinet758/items/d591fa519764aeecb6bf

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys, io
import re, math
ans=0
(n,d)=map(int, raw_input().split())
b=map(int, raw_input().split())
for i in range(1,n):
    if b[i-1]>=b[i]:
        r=((b[i-1]-b[i])+d)/d
        b[i]+=d*r
        ans+=r
print ans

一回目は((b[i-1]-b[i])+d-1)/d にしてたりしてダメだった。 考えてみれば手前の数と等しい場合に加算を行わくなってしまう罠が。。。