読者です 読者をやめる 読者になる 読者になる

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

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

Codeforces Round #177 (Div.2)

はい。
http://codeforces.com/contest/289

A. Polo the Penguin and Segments

ざっくりと大意

・A問題のが解読難しい

方針のようなもの

・後で

B. Polo the Penguin and Matrix

ざっくりと大意

・n*mの中の数列の中の数をdだけ加減を繰り返し行なって全て同じ数にする??

方針のようなもの

・数列の中で基準にする値を決めて先頭から処理

n,m,d=map(int,raw_input().split())
l=[]
ans=0
for i in xrange(n):
    l.extend(map(int, raw_input().split()))
l.sort()
chk=l[len(l)/2]
ans=0
for i in l:
    e=abs(i-chk)
    if e%d:
        print -1
        exit()
    ans+=abs(i-chk)/d
print ans

基準にするのがソートした数列の中央値?で。平均値を基準にすると手数が圧倒的に増えるっぽい・・数列の長さ偶数の場合は小さい方でも大きい方でもいいっぽい。サンプルも親切なんじゃなかろうか。