#HX1252D. 清虚幻境大危机!

提交3 通过3
通过率100%
时间限制1000ms
内存限制128MiB
    ID: 10038 传统题 1000ms 128MiB 尝试: 3 已通过: 3 难度: 普及+/提高- 上传者: 标签>二分算法编程题C++CSPCSP复赛CSP复赛专项练习暑假CSP复赛集训暑假集训1252-二分优化

题目描述

题目描述

幻境遭遇了多次时空风暴! 时空风暴每次都会在相同位置产生裂缝,共 n 条裂缝。为了防止清虚幻境被破坏,为了保护幻境和平,小珅在每个空间裂缝处布置了 m 重封锁线,每重封锁线由一支部队进行阻击。 已知每处裂缝处各部队的伤害值。每场时空风暴都会在每个裂缝处出现一个魔君,第 i 次时空风暴降临的魔君护甲值为 power**i。只有当该魔君受到伤害大于等于 power**i 时,才能击杀魔君,防止其突破本层封锁线。若魔君突破了m 重封锁线,则视为失败。小珅希望合理布置每处裂缝的部队,使得魔君尽可能早的被击杀,由于每个裂缝相距较远,布阵只能在同一个裂缝中改变部队顺序。 幻境共遭遇了 q 次时空风暴,请你计算,在小珅的最佳布防下,每次时空风暴降临的 n 个魔君最多突破到第几重封锁线?若有魔君突破了 m 重封锁线,则输出 −1。

输入格式

第 1 行,2个正整数空格隔开,n 表示有 n 条裂缝,m 表示每个空间裂缝处布置了 m 重封锁线;

接下来 n 行,每行 m 个空格隔开的正整数,第 i+1 行的 m 个数据表示在第 i 处裂缝的 m 个部队的伤害值;

接下来 1 行,一个正整数 q 表示时空风暴产生的次数;

接下来 q 行,每行 1个正整数 power**i表示第 i 次时空风暴降临时每处魔君的护甲值。

对于 100%的数据,1n1001\le n\le 1001m50001\le m\le 50001q3000001\le q\le 30000011\le伤害值1000\le 10001poweri1091\le power_i\le 10^{9}

输出格式

每行一个数据,表示在小珅的最佳布防下,每次时空风暴降临的 n 个魔君最多突破到第几重封锁线?若有魔君突破了 m 重封锁线,则该行输出 −1。

样例输入

3 4
1 2 3 4
2 3 4 5
3 4 5 6
3
3
10
15

样例输出

1
4
-1

提示

对于 100%的数据,1n1001\le n\le 1001m50001\le m\le 50001q3000001\le q\le 30000011\le伤害值1000\le 10001poweri1091\le power_i\le 10^{9}

3 4
1 2 3 4
2 3 4 5
3 4 5 6 
3
3
10
15
1
4
-1
3 5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
3
3
12
15
1
3
5
3 4 
1 2 3 4 
2 3 4 5 
3 4 5 6 
3 
3 
10 
15
1
4
-1