Codeforces 168B

解法

行の開始文字と空行の有無に応じて分岐をする.Javaの場合はStringBuilderを使わないと間に合わない.

実装(Java)

import java.util.*;
import java.math.*;
import java.io.*;
import java.util.regex.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;
import static java.lang.System.*;

public class Main {
	Scanner cin;
	Boolean is_amplifying(String s){
		for(int i=0;i<s.length();i++){
			if(s.charAt(i)=='#')return true;
			if(s.charAt(i)!=' ')return false;
		}
		return false;
	}
	void run(){
		cin=new Scanner(System.in);
		List<String> input = new ArrayList<String>();
		while(cin.hasNextLine()){
			input.add(cin.nextLine());
		}
		StringBuilder tmp=new StringBuilder();
		int back=1;
		int cnt=0;
		for(int i=0;i<input.size();i++){
			if(is_amplifying(input.get(i))){
				if(cnt>0&&back==1&&tmp.length()==0){
					printf("\n");
				}else if(tmp.length()>0){
					printf("%s\n",tmp.toString());
				}
				tmp=new StringBuilder();
				printf("%s\n",input.get(i));
				back=1;
				cnt=0;
			}else{
				cnt++;
				tmp.append(input.get(i).replaceAll(" ",""));
			}
		}
		if(tmp.length()>0)printf("%s\n",tmp.toString());
		else
			if(cnt>0)printf("\n");
	}

	void printf(String format,Object... args){
		System.out.printf(format, args);
	}

	public static void main(String[] args) {
		new Main().run();
	}

}