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

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

Codeforces Round #160 (Div. 2)

はい。 追記:2014/10/10
http://codeforces.com/contest/262

A. Roma and Lucky Numbers

ざっくりと大意

・4と7は幸運の数字、例えば47,744,4 で、5,17,467は違う。
・n個の数字の中で4と7の個数がk個を越えないものがいくつあるか。

方針のようなもの

・与えられるそれぞれの数の4と7の個数を数える。

n,k=map(int,raw_input().split())
ans=chk=0
l=[x for x in raw_input().split()]
for i in l:
    if k>=i.count('4')+i.count('7'):
        ans+=1
print ans

B. Roma and Changing Signs

ざっくりと大意

・n個の数が与えられて、その中のいずれかの数に対して-1を掛けて正負を変える。
・上記操作を確かにk回行って最も大きい総和はいくつか?

方針のようなもの

・とりあえずソートして負の数を優先して消化する。負の数がなくなったならば残り回数が偶数なら何も操作せずに総和を出力、奇数なら総和から数列の最も小さな数を引いて出力。

n,k=map(int,raw_input().split())
l=[int(x) for x in raw_input().split()]
ans=chk=0
l.sort()
for i in range(k):
    if l[i]<0:
        l[i]=l[i]*-1
        chk+=1
    elif l[i]>=0:
        break
    if i==n-1:
        break
if (k-chk)%2:
    m=min(l)
    m2=l.index(m)
    l[m2]=l[m2]*-1
print sum(l)