比赛 防止浮躁的小练习v0.7 评测结果 AAAAAAAAAAAAAA
题目名称 子序列 最终得分 100
用户昵称 Foenix 运行时间 0.067 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2016-10-27 20:39:58
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
vector<int>Word[30];
vector<int>::iterator pos;
int M,POS;
char char_A[100005],char_B[55];

int main(){
	freopen("subsequence.in","r",stdin);
	freopen("subsequence.out","w",stdout);
	scanf("%s %d",char_A,&M);
	int Len_A=strlen(char_A);
	POS=-1;
	for(int i=0;i<Len_A;i++)Word[char_A[i] - 'a'].push_back(i);
	for(int i=1;i<=M;i++){
		scanf("%s",char_B);
		int Len_B=strlen(char_B);
		bool bo=false;
		POS=-1;
		for(int j=0;j<Len_B;j++){
			pos=upper_bound(Word[char_B[j] - 'a'].begin(), Word[char_B[j] - 'a'].end(), POS);
			if(pos == Word[char_B[j] - 'a'].end()){
				printf("No\n"); bo=true;
				break;
			}
			POS=*pos;
		}
		if(!bo)printf("Yes\n");
	}
	return 0;
}