讨论/技术交流/老师布置的作业/

老师要求用C把这题写出来

实在不会 来蹲个大神棒棒我

题目:

疫情期间,一定要避免人群聚集,某同学打算使用计算机程序来模拟:长100米的跑道上有m个人。有的面朝左,有的面朝右。每个人都只能沿着跑道走,速度是1m/秒。当两个 人碰面时,他们会同时掉头往相反的方向走。这些人中, 有1个人感染了新型冠状毒。并且在和其它人碰面时,会把冠状病毒传染给碰到的人。请你计算,当所有人都离开跑道时,有多少人感染了新型冠状病毒。

[输入格式]第一行输入一个整数m(1<m<25),表示总人数。接着 的一行是用空格分开的整数Ai (-100<Ai<100),Ai的绝对值表示人距离跑道左边端点的距离。大于零表示面向右,小于零表示面向左,数据中不允许出现0值,也不允许出现两个人占用同一位置。其中,第一个数据代表的人已经携带病毒。

[输出格式]输出为一个整数,代表最后感染了新冠病毒的人数。
[输入样例]

5

-10 8 -20 12 25

[输出样例]

3

共 1 个回复

一般这种先等效简化成不掉头吧。
在传染源面前所有相向而行的肯定都跪了,然后第一个传染到的人会把传染源身后同向而行的都干掉。
反过来想溜的掉的要么是一开始就在传染源身后越溜越远的(传染源自己感染不到,传染到的人追不上),要么是走在前面同向的(传染源自己追不上,对于传染到的人他们在其身后越溜越远)。