Problem H: 版本依赖

"
Time Limit $1$ 秒/Second(s) Memory Limit $512$ 兆字节/Megabyte(s)
提交总数 $119$ 正确数量 $23$
裁判形式 标准裁判/Standard Judge 我的状态 尚未尝试
难度 分类标签 字符串
在项目开发的过程中,会经常使用别人打包好的项目以简化工作。别人的项目也有它们的版本号,我们所依赖的项目需要对其版本号进行一些限制,所以项目的根目录一般会有一个文件存储该项目的依赖情况,以便程序员主动解决依赖问题,或者由某些包管理工具自动下载正确的依赖。现在给你某个项目的依赖,以及当前电脑里已经存在的项目的版本号的列表,问你当前依赖是否存在问题依赖文件每行代表一个依赖,由依赖名称,依赖关系,依赖项目的版本号三部分组成。依赖名称只由小写字母组成,名 称最长为10个字母。依赖关系为'==','<','>','<=','>='这五种的某 一种,版本号由三部分组成格式为:<主版本号>.<次版本号>.<修订版本号>,如1.0.0,版本号为非负整数且小于100。

两个版本号的比较,依次根据主版本号,次版本号,修订版 本号之间的数字大小关系来确定两个版本号的大小关系。
如某个项目A的依赖如下:
apple==1.0.0
banana>=2.3.3
celery<4.0.0
这表示A项目依赖于apple,banana,celery这三个项目,对其 分别的要求是:apple的版本号必须为1.0.0,banana的版本号 至少为2.

第一行输入 正整数 T,表示数据的组。
每组数 据中,第一行是一个正整数n,表示该项目的依赖个数。之后紧跟着 n行,每行的格式由依赖名称、依赖关系、版本号三部分组成。然后是一个正整数 m,表示电脑里已经存在的项目个数。在这之后又有 m行,每行分成两个部分,第一部分为项目名称,第二部分为项目版本号,这两部分用空格隔开。
对于每行数据, 先输出 格式为 格式为 'Case t: ',如果存在版本依赖问题,输出所有需要升级或者安装的依赖名称,用空格隔开 。若不存在版本依赖问题,则输出 OK 。
3
3
apple==1.0.0
banana>=2.3.3
celery<=14.20.03
3
apple 1.0.0
banana 2.3.3
celery 3.4.15
1
apple==1.0.0
1
banana 3.0.0
3
banana>2.3.3
celery>=3.4.2
egg==1.0.0
4
apple 1.0.0
banana 2.3.3
celery 3.4.15
egg 0.10.10
Case 1: OK
Case 2: apple
Case 3: banana egg