Codeforces #14(div2) A "Letter"

問題:http://codeforces.com/contest/14/problem/A

'*'のある行まで読み飛ばして,それからすべての行を保持.
'*'のある行すべてにおいて最も左と最も右を記録.
保持した行のうち答えとなる文字列を抜き出して出力.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class A_Letter {
	public static void main(String[] args) throws Exception{
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt(), m=scan.nextInt();
		List<String> list = new ArrayList<String>();
		String line = "";
		for(;scan.hasNext()&&!(line=scan.nextLine()).contains("*"););
		int l = Math.max(0, line.indexOf('*'));
		int r = line.lastIndexOf('*');
		int e = 0;
		list.add(line);
		for(;scan.hasNext();list.add(line)){
			line = scan.nextLine();
			l = Math.min(l, line.indexOf('*')<0?l:line.indexOf('*'));
			r = Math.max(r, line.lastIndexOf('*'));
			if(line.contains("*")){
				e=list.size();
			}
		}
		for(int i = 0; i < e+1; i++){
			System.out.println(list.get(i).substring(l, r+1));
		}
	}
}