Codeforces Beta Round #64
はい。
http://codeforces.com/contest/70
B. Text Messaging
expression parsing,greedy,strings
ざっくりと大意
・文字数制限のnと編集する?文字列が1行で与えられる。
・.?!いずれかでn文字を超えないタイミングで改行を難行で書けるか。
方針のようなもの
・先頭から見ていって.?!が出たら文字数を別途メモに加算して数え直し。
・さっきのメモと新たな数え分が制限数を越えたら改行だったことにして行数加算。
・制限数になるまではメモに文字数加算して新たに数えていく。
・最後の文字が丁度制限数の時など色々上手く調節出来ず自力では解けなかった。。。
358798のAlekseyさんをパクリ
#!/usr/bin/env python # -*- coding: UTF-8 -*- import time import sys, io import re, math #start = time.clock() n=int(raw_input()) #l=[int(x) for x in raw_input().split()] text=re.split(r'[.?!]{1}[ ]?', raw_input())[:-1] #print text #Hello. I am a little walrus. #['Hello', 'I am a little walrus'] chk=0 ans=1 for i in text: #1要素が制限字数以上であると書き換えられないのでおしまい if len(i)>=n: print 'Impossible' sys.exit() #chkメモと今回チェックの行を合わせて制限数を越えなければchkメモに加算 if chk+len(i) + (1 if chk==0 else 2)<=n: chk+=len(i)+(1 if chk==0 else 2) #改行加算 else: ans+=1 chk=len(i)+1 # chk=0 print ans