草体にぼ日記

だらだらと

ABC058C 怪文書/Dubious Document

C - 怪文書 / Dubious Document

int main()
{
	cout <<setprecision(10);
	int n ; cin >> n;
	vector<string> S(n);
	rep(i,n) cin >>S[i];

	int num[26];
	rep(i,26) num[i] = 50 ;

	rep(i,n){
		for(int c = 'a' ; c <= 'z' ; c++){
			int count = 0;
			for(int j = 0 ; j <= S[i].size() ; j ++){
				if(S[i][j]==c){
					count ++;
				}
			}
			chmin(num[c-'a'],count);
		}
	}
	int ans = 0;
	rep(i,26){
		char c = 'a'+i;
		rep(j,num[i]){
			cout <<c;
		}
	}
	cout << endl;
}

解法
aの使える個数は、S1~Snのそれぞれに入っているaの数をsa1,sa2,...sanとすると、 それの最小値
って感じなことをやっていく
sa1~sanの最小値はnum[0]に格納されている

あとは
a~zについて、aをnum[0]回,bをnum[1]回…出力させれば解ける