| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
【po shi shui】#include <iostream>
#include <stdio.h>
#include <set>
#include <string>
#include <algorithm>
#include <sstream>
using namespace std;
set<string> keywords;
struct excuse{
string s;
int cs;
}excuses[100];
bool cmp(const excuse& e1, const excuse& e2){
return e1.cs > e2.cs;
}
bool isAlpha(char c){
return (c>='a'&&c<='z') || (c>='A'&&c<='Z');
}
string toLower(string s){
int len = s.length();
string res = "";
for(int i = 0; i < len; i++){
if(s[i] >= 'A' && s[i] <= 'Z') {
//cout << (char)(s[i] - ('A'-'a'));
res += (s[i] - ('A'-'a'));
}
else res += s[i];
}
return res;
}
int parse(string s){
int state = 0;
string col;
int len = s.length();
int gs = 0;
for(int i = 0; i < len; i++){
if(state==0 && isAlpha(s[i])){
col += s[i];
state = 1;
}
else if(state==0){
continue;
}
else if(isAlpha(s[i])){
col += s[i];
}
else{
if(keywords.find(toLower(col)) != keywords.end()) gs++;
///cout << "col: " << col << "tolower: " << toLower(col) << endl;
col = "";
state = 0;
}
}
if(state && keywords.find(toLower(col)) != keywords.end()) gs++;
return gs;
}
int main() {
int cnt = 0;
int n,m;
while(cin >> n >> m){
cnt++;
cout << "Excuse Set #" << cnt << endl;
keywords.clear();
for(int i = 0; i < n; i++){
string s;
cin >> s;
keywords.insert(s);
}
for(int i = 0; i < m; i++){
string s;
while(!s.length()) getline(cin, s);
excuses[i].s = s;
int cs = parse(s);
excuses[i].cs = cs;
//cout << s << " " << cs << endl;
}
sort(excuses, excuses+m, cmp);
int gs = excuses[0].cs;
//cout << "geshu:" << gs << endl;
for(int i = 0; i < m; i++){
if(excuses[i].cs != gs) break;
cout << excuses[i].s << endl;
}
cout << endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator