【AHAOI Round1 pj T2】清理收藏夹

题目背景

#### 来自dbxxx的温馨提示:本题细节较多,请仔细阅读题面中的细节,尤其是加重加粗的部分。 众所周知,dbxxx是一个懒到炸裂的人,他每次看到啥比较好的网站都会放在收藏夹,于是他的收藏夹越来越满,找东西也麻烦到炸裂,但众所周知,dbxxx是一个懒到炸裂的人(再次强调),所以dbxxx想写一个程序来整理收藏夹,但众所周知,dbxxx是一个懒到炸裂的人(再再次强调),所以他想让你帮他写一个程序来整理他的收藏夹。

题目描述

dbxxx的收藏夹里收藏了 $n$ 个网址,按照时间顺序从早到晚排列。 我们规定,以下的网址关系都叫**一类相似网址**: ```plain http://XXXX.com http://www.XXXX.com XXXX.com www.XXXX.com https://XXXX.com https://www.XXXX.com ``` 我们需要删除类似的网址,使其只留下一个,**按照表所列的顺序优先级删除**。比如`http://XXXX.com`和`https://www.XXXX.com`,优先删除`http://XXXX.com`。 而`http://www.XXXX.com`,`http://XXXX.com`,`https://XXXX.com`中,要删除`http://XXXX.com`和`http://www.XXXX.com`,只留下`https://XXXX.com`。 出现了两个一模一样的网址(即无任何差别)的网址当然也算重复网址啦。我们管这种网址关系叫做**相同网址**。相同网址也需要删除冗余的,只留一个。 另外,网址内容的大小写同样不分,即 `www.luogu.com.cn`和`www.LUOGU.COM.cn`是一个网址。此时若删除,删除**大写字母多的那一个**。如果两个网址的大写字母数量相同,删除**时间较晚的那个**。我们规定这种网址的关系叫做**二类相似网址**。并且,**协议头(即https://)和3w(www)只会是小写,不会是大写。** 两个网址还可以在协议不同的情况下,大小写仍然不同。(如`https://GOOGLE.com`和`http://google.com`)。此时仍然按照**二类相似网址**的删除规则进行删除。(如`https://GOOGLE.com`和`http://google.com`,应优先删除`https://GOOGLE.com`)。 同时,dbxxx想删除 $m$ 个他现在已经不需要的网址,我们需要把这些网址删除。**删除的时候记得把一类类似网址和二类相似网址都删掉**。**请注意dbxxx要删除的网址可能并不在收藏夹中**,此时输出`Error! Can't find website:` + 一个半角空格 + 网址。输出的顺序和dbxxx中输入的需删网址的顺序一样。~~嗯,dbxxx收藏的实在是太多,于是记不住收藏夹都有啥是很正常的事情,可以理解~~ 最后,**按照网址去掉协议头和3w的字符串后,将所有大写字母变成小写字母后的字典序排列**。如`luogu.com.cn`就是网址`https://www.LUOgu.com.cn`经过这一操作后的结果。

输入输出格式

输入格式


第一行,一个正整数 $n$,代表原收藏夹中的网址数量。 接下来 $n$ 行,为原收藏夹中的网址,一行一个。 接下来一行,一个正整数 $m$,代表需删除的网址数量。 接下来 $m$ 行,为需删除的网址,一行一个。

输出格式


第一行,一个正整数 $k$,代表整理好后的网址数量。 接下来 $k$ 行,为清理后收藏夹的网址,一行一个。

输入输出样例

输入样例 #1

3
www.luogu.com.cn
www.baidu.com
www.google.com
0

输出样例 #1

3
www.baidu.com
www.google.com
www.luogu.com.cn

输入样例 #2

6
www.baidu.com
https://www.baidu.com
www.google.com
https://google.com
http://google.com
baidu.com
0

输出样例 #2

2
https://www.baidu.com
https://google.com

输入样例 #3

6
www.baidu.com
https://www.baidu.com
www.google.com
https://google.com
http://google.com
baidu.com
2
www.baidu.com
www.google.com

输出样例 #3

0

输入样例 #4

6
www.baidu.com
https://www.baidu.com
www.google.com
https://google.com
http://google.com
baidu.com
2
http://www.baidu.com
www.bilibili.com

输出样例 #4

Error! Can't find website: www.bilibili.com
1
https://google.com

输入样例 #5

5
https://www.BAIDU.com
baidu.com
www.GOOGLE.com
https://www.GOOgle.com
https://www.gooGLE.com
0

输出样例 #5

2
baidu.com
https://www.GOOgle.com

说明

对于 $10\%$ 的数据,$m = 0$,$n \le 5$,不存在任何相同,一类相似,二类相似网址。 对于 $20\%$ 的数据,$m \le 5$,$n \le 10$,不存在任何相同,一类相似,二类相似网址,需删除的网址在原收藏夹中都存在。 对于 $30\%$ 的数据,$m \le 5$,$n \le 10$,不存在任何相同,一类相似,二类相似网址。 对于 $50\%$ 的数据,$m \le 20$,$n \le 100$,不存在任何一类相似网址,二类相似网址。 对于 $60\%$ 的数据,$m \le 20$,$n \le 100$,不存在任何一类相似网址。 对于 $80\%$ 的数据,$m \le 200$,$n \le 1000$。 对于 $100\%$ 的数据,$0 \le m \le n \le 10^6$,网址长度$1\le len \le 50$,网址字符串不含空格,不含全角字符。 --- 提示:本题可能会用到字符串快读快写,这里提供快读快写的板子: ```cpp std :: string read() { char ch; std :: string ret; ch = getc(stdin); while (ch == ' ' || ch == '\n') ch = getc(stdin); while (ch != ' ' && ch != '\n') { ret.push_back(ch); ch = getc(stdin); } return ret; } void write(std :: string str) { for (int i = 0; i < str.length(); ++i) putc(str[i], stdout); return ; } ```