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

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

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

Codeforces Round #221 (Div. 2)

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

A. Lever

ざっくりと大意

・てこの原理で力が釣り合うか、偏るか。

方針のようなもの

・重さ*番目の和を左右で分けて計算する。

a,b=map(str,raw_input().split('^'))
a=a[::-1]
al=len(a)
bl=len(b)
l=r=0
x=0
while x<al:
    if a[x]!='=':
        l+=int(a[x])*(x+1)
    x+=1
x=0
while x<bl:
    if b[x]!='=':
        r+=int(b[x])*(x+1)
    x+=1
print 'balance' if l==r else 'left' if l>r else 'right'

B. I.O.U.

ざっくりと大意

・債務関係を最適化する。
・AはBに20貸している、BはCに20貸していて40の債務関係があるのをAがCに20貸しているようにすると20の債務関係になる。

方針のようなもの

・付け替えをシミュしようと思ったらバグった。。。

n,m=map(int,raw_input().split())
l=[]
ans=0
for i in xrange(m):
    a=map(int,raw_input().split())
    ans+=a[2]
    l.append(a)
while 1:
    chk=len(l)
    if chk==1:
        break
    for i in range(chk):
        for j in range(i,chk):
            if l[i][1]==l[j][0]:
                if l[i][2]>l[j][2]:
                    ans-=l[j][2]
                    l[i][2]-=l[j][2]
                    l[j][0]=l[i][0]
                    break
                elif l[i][2]==l[j][2]:
                    ans-=l[i][2]
                    l[i][1]=l[j][1]
                    l.pop(j)
                    break
                else:
                    ans-=l[i][2]
                    l[j][2]-=l[i][2]
                    l[i][0]=l[j][0]
                    break
        if len(l)==chk:
            break
    if len(l)==chk:
        break
print ans