比赛在四教机房举行。
不是平时那间,是大机房,能容纳八十台机器,平时供研究生使用。今天被清了场,每台机位前摆着一张白纸,上面印着考生编号。门口站着两个老师,一个拿登记本,一个拿秒表,表情严肃得像。
张辰走进去,扫了一眼。参赛选手三四十人,大多是大三大四的,穿着的确良衬衫或者灰中山装,手里拿着钢笔和草稿纸,站在机位前紧张地搓手。有人嘴里念念有词,像在背公式;有人闭着眼睛,额头冒汗;还有人蹲在墙角,最后再看一眼笔记。
郭昊跟在张辰身后,块头大,一进门就撞到了门框,发出咚的一声闷响。所有人齐刷刷回头看他,他慌忙缩了缩肩膀,像只做错了事的熊。
"别怕。" 张辰说,"他们看你,是因为你帅。"
"扯淡。" 郭昊低声嘟囔,"是因为我胖。"
沈幼微最后一个进来。她今天穿了件白衬衫,袖子卷到小臂,底下是那条高腰牛仔裤,裤线熨得笔直。她把马尾辫扎得比往常紧,碎发全部别到耳后,露出整张脸,清秀,但眼神亮,像两颗浸在水里的黑石子。
她走到17号机位前,机位上贴着纸条:"武汉XX大学,沈幼微"。她用手指蹭了蹭纸条边角,坐下,背挺得笔直,像棵小杨树。
张辰在18号机位,郭昊在19号。三人连成一排,中间隔着过道。
"比赛规则!" 拿秒表的老师站到讲台前,声音洪亮,"四小时,三道题,上机编程,实时评测。每道题有十个测试点,全部通过得满分,部分通过按比例得分。可以带纸质资料,禁止交头接耳,禁止抄袭。"
他举起秒表:"现在开始!"
秒表咔哒一响,机房里顿时炸开了锅。键盘声、翻纸声、叹气声、嘀咕声混成一片,像一锅烧开了的粥。
张辰没急着敲键盘。他先拿起考题纸,三道题,快速扫了一遍。
第一题:斐波那契数列变种,求第n项模10007。n的范围是10^9。
简单。矩阵快速幂,O(log n)。
第二题:最短路径问题,带负权边。节点数500,边数1000。
也简单。Bellman-Ford,或者SPFA。
第三题:动态规划,背包问题变种。物品有依赖关系,选A必须先选B,容量1000,物品数500。
有点意思。树形DP,或者把依赖关系转成有向图,再拓扑排序后做背包。
他放下纸,开始敲代码。指尖落在键盘上,几乎没有停顿,字符一行行往上跳,绿色关键字、白色变量、黄色字符串在黑屏幕排布整齐,像一支训练有素的军队。
二十分钟,第一题写完,编译,零报错,提交。屏幕刷新,十个测试点,全部绿色,AC。
他靠在椅背上,转了转脖子,颈椎咔吧一响。旁边一个大四学生还在第一题上较劲,额头上的汗珠掉在键盘上,他用袖子擦了擦,袖子上的粉笔灰在黑色键帽上留下一道白痕。
张辰没看他,开始第二题。
四十分钟,第二题写完,提交,AC。
他开始第三题。这一题复杂,需要建树,再跑DFS序,最后在DFS序上做背包。他先在草稿纸上画了个树状图,节点用圆圈,边用箭头,依赖关系标得清清楚楚。然后他把树转成线性序列,敲下状态转移方程。
手指在键盘上飞舞,像两只灵活的鸟。代码越写越长,屏幕上的字符密密麻麻,但他没有一处停顿,没有一处回删,像是一台精密运转的机器。
一小时三十分钟,第三题写完,提交。屏幕刷新,十个测试点,前九个绿色,最后一个红色,WA。
他皱了皱眉,笔尖点了点屏幕。最后一个测试点,边界情况,容量恰好等于1000时,依赖关系的最底层节点没被正确处理。他回滚到代码中间,加了一行判断,重新提交。
绿色。全部AC。
他靠在椅背上,双手枕在脑后,望着天花板。天花板上有一块水渍,形状像只兔子,两只长耳朵,像在跳。
两小时不到,三道题全部满分。他看了看周围,大部分人才做到第二题,有人还在第一题上挣扎,屏幕上的报错信息红得刺眼。
他起身,去厕所。经过沈幼微机位时,瞥了一眼她的屏幕。她在做第二题,代码已经写了一大半,屏幕上的字符排列整齐,像她的笔记本一样工整。她的手指在键盘上移动得不快,但稳,每一个键都按得扎实,没有误触。
他继续走,经过郭昊机位。郭昊在做第一题,眉头拧成麻花,嘴里念叨着"递归递归",手指在键盘上戳来戳去,戳出一行行歪歪扭扭的代码。屏幕上三个报错,他还没发现。
张辰没停,径直走出机房。
厕所在走廊尽头,氨水味浓烈。他解决完,站在洗手池前,水龙头是铁制的,拧开发出刺耳的吱嘎声。水很冷,刺得手指发麻。他捧了一把水,拍了拍脸,抬起头,望着镜子里的人。
高高瘦瘦,银边眼镜,镜片上有几滴没擦的水珠。十八岁的脸,没有皱纹,没有黑眼圈,皮肤白净,嘴唇抿着,看着有点冷硬。
"两百年。" 他对着镜子说,音量低到只有自己能听见,"前世ACM区域赛金牌,现在回来打这种比赛,欺负人。"
他笑了,嘴角往右边歪,不是嘲笑别人,是嘲笑自己。笑完,他用袖子擦了擦眼镜片,转身走回机房。
郭昊终于把第一题搞定了,十个测试点,过了八个,两个超时。他靠在椅背上,长长吐出一口气,像只泄了气的皮球。
"没事。" 张辰说,"部分分也有。"
"你呢?" 郭昊问。
"做完了。"
"全做完了?"
"嗯。"
郭昊瞪大眼,像看怪物一样看着他:"三道题?"
"三道。"
"全对?"
"全对。"
郭昊张了张嘴,没说出话来。他扭头看了看周围,大部分人还在第二题上挣扎,有人已经开始抓头发,有人把草稿纸揉成一团,扔在地上。
"你是人吗?" 他问。
"是。" 张辰说,"只是比你多练了几年。"
四小时结束,铃声响起。所有人停手,老师挨个检查机器,记录成绩。
张辰站起来,把椅子推回原位,椅子腿在水泥地上刮出最后一声刺耳的响动。他走到机房门口,靠着门框,从兜里摸出一张饭票,粉色的,一角钱,在指间转了个圈。
沈幼微走出来,额头上有层细汗,马尾辫有些松了,碎发贴在脸颊上。她走到张辰身边,没说话,只是站着,背还是挺得笔直。
"怎么样?" 张辰问。
"第二题全对,第三题过了一半。" 她说,声音平静,但指尖在微微发抖,"第一题……超时了一个点。"
"够了。" 张辰说,"前十没问题。"
郭昊最后出来,垂头丧气,像只斗败的公鸡。
"我……" 他开口。
"不用说了。" 张辰打断他,"你第一题部分分,第二题做了一半,够了。"
"够什么?"
"够前五。" 张辰说,"这比赛大部分人第二题都做不出来。"
郭昊愣住了,然后咧开嘴,露出一口白牙:"真的?"
"真的。"
成绩半小时后公布。老师把成绩单贴在机房门口的黑板上,白纸黑字,毛笔写的,墨迹还没透,被风一吹,边角往上卷。
张辰站在人群最前面,仰头看。第一名:武汉XX大学,张辰,300分。第二名:华中科技大学,李建国,210分。第三名:武汉大学,王小明,180分。
郭昊挤过来,手指在纸上往下滑,滑到第五行:武汉XX大学,郭昊,125分。沈幼微,第十名,110分。
"第五!" 郭昊喊出声,嗓门大,震得旁边人纷纷侧目,"我真是第五!"
"小声点。" 沈幼微说,但她的嘴角也弯了,露出两颗小虎牙。
颁奖在一间小教室里举行。没有舞台,只有讲台,讲台上摆着一张长条桌,桌上铺着一块洗得发白的蓝布,布上放着三张奖状和三个信封。
校长没来,来的是计算机系主任,一个五十多岁的老头,头顶秃了大半,剩下的头发抹着发蜡,梳成三七分。他站在讲台前,手里拿着名单,念一个名字,发一张奖状。
"第一名,武汉XX大学,张辰!"
张辰走上讲台,脚步稳,像踩在实地上。他从主任手里接过奖状,白纸黑字,盖着学校公章,边角裁得歪歪扭扭,像用剪刀手工剪的。还有一个信封,鼓鼓的,里面装着一千块钱,十张一百的,新钞,连号。
"说两句?" 主任问。
张辰站到讲台中央,台下三四十双眼睛看着他,有羡慕,有嫉妒,有好奇,有不服。他清了清嗓子,声音不高,但清晰,每个字都咬得扎实。
"谢谢。" 他说,"我讲两句。"
台下安静了。
"刚才比赛的时候,我用了自己写的输入法。" 他从兜里掏出一张软盘,黑色硬壳,标签上写着"辰光输入法 v0.2","叫辰光,智能排序,整词输入,生僻字库。比机房那套拼音输入法好用十倍。"
他顿了顿,目光扫过台下,银边眼镜片反光,把他的眼睛藏在了两片亮斑后面。
"现在免费。" 他说,"以后可能收费。欢迎大家试用,有bug找我,我改。"
台下愣了两秒,然后爆发出笑声。有人鼓掌,有人吹口哨,有人喊"给我一张!"。张辰把软盘放回兜里,冲台下点了点头,转身走下讲台。
主任站在原地,手里拿着名单,愣是没反应过来。他当了二十年系主任,头一次见有人在颁奖台上推销自己的软件。
郭昊在台下笑得直拍大腿,被沈幼微用手肘轻轻顶了一下,他才收敛些,但肩膀还在抖。
"你疯了?" 郭昊低声问,"那是颁奖台!"
"颁奖台怎么了?" 张辰说,"台下三十多人,全是计算机系的精英,每个人背后都有一个学校,一个机房,几十台电脑。"
"你是说……"
"种子。" 张辰说,"撒下去,等发芽。"
沈幼微在旁边听着,没说话。她看着张辰的侧脸,阳光从窗户照进来,把他的轮廓照得锐利,颧骨、鼻梁、下巴,线条净得像刀刻。她忽然发现,这个人说话的时候,眼底有光,不是反射的阳光,是从里面烧出来的,像暗夜里的一小簇火。
"张辰。" 她开口。
"嗯。"
"我也想要一张。" 她说,"你的输入法。"
"你不是已经有了?" 张辰问。
"那张是字库版。" 她说,"我想试试正式版。"
张辰从兜里又掏出一张软盘,递给她。她接过,黑色硬壳,塑料边缘有些毛糙。她捏了捏,像在确认这东西的分量,然后收进书包,帆布包,洗得发白,边角磨出毛边。
"谢谢。" 她说。
"不客气。" 张辰说,"以后你帮我测试,bug找到算你的。"
她笑了,嘴角往右边歪,两颗小虎牙全露出来。这是她今天第一次笑得这么开,像一扇紧闭的门忽然被风吹开,阳光涌了进来。
颁奖结束,人群散去。张辰、郭昊、沈幼微三人走出教学楼,外面阳光正好,秋高气爽,梧桐叶子黄了大半,被风一吹,哗啦哗啦往下掉。
郭昊把奖状卷成筒,夹在腋下,像夹着棍子。他走路姿势都变了,脯挺得高高的,脚步重,踩在地上咚咚响。
"第五。" 他嘴里念叨,"我是第五。"
"知道了。" 张辰说,"说了十遍了。"
"我妈要知道,得乐疯。" 郭昊说,"我得给她写信,告诉她她儿子是全省第五。"
"全省第五。" 沈幼微纠正他,"不是全国。"
"全省也够牛了。" 郭昊说,"我妈摆摊卖烤红薯,一天挣五块,我得卖多少天才能挣到第五?"
张辰没接话,他把那个装着一千块的信封从兜里掏出来,十张一百的,新钞,连号。他抽出三张,递给郭昊,又抽出三张,递给沈幼微。
"三百三。" 他说,"说好了。"
郭昊没接:"我说了,我只要两百。"
"拿着。" 张辰把钱塞进他手里,"你妈知道你是第五,高兴。知道她儿子拿着奖金给她买礼物,更高兴。"
郭昊低头看着掌心里的三张钞票,手指在纸面上蹭了蹭,确认是真的。他把钱对折,对折,再对折,折成一个小方块,塞进衬衫内袋,贴着口放好。
"我给她买件毛衣。" 他说,"武汉冬天湿冷,她摆摊冻得直哆嗦。"
"好。" 张辰说。
沈幼微也把那三百三收好,她没有塞进内袋,而是放进书包最里层的夹层,拉链拉好,哗啦一响。
"我请吃饭。" 她说,"食堂,红烧肉。"
"你请不起。" 张辰说,"三百三,请三顿就没了。"
"一顿。" 她说,"就一顿。"
"行。" 张辰往前走了两步,"但得先去个地方。"
"哪?"
"邮局。" 张辰说,"寄钱。"
他抽出四张一百的,塞进另一个信封,写上家里的地址:黄石铁山区厂区宿舍,张秀英收。他把信封封好,贴上邮票,八分,黄山出。
"四百?" 郭昊问,"你不是说留三百三吗?"
"剩下三百。" 张辰把信封塞进帆布包,"够花。"
"三百能嘛?"
"买软盘,买资料,买上机时间。" 张辰说,"够用三个月。"
沈幼微看着他,没说话。她忽然发现,这个人对自己的钱抠得要命,对别人的钱却大方得很。给家里寄四百,给郭昊三百三,给她三百三,自己只剩三百。
"你图什么?" 她问。
"图以后。" 张辰说,"以后他们有钱了,会加倍还给我。"
"如果他们不还呢?"
"那就当失败。" 张辰说,"有赚有赔,正常。"
沈幼微没再说话,但她看着张辰的眼神变了,像是有弦被轻轻拨了一下,发出一声低沉的回响。
三人走向食堂,夕阳把他们的影子投在水泥地上,三个影子,一长两短,中间隔着一拳的距离,但方向一致,都朝着西边那盏昏黄的灯光。
食堂门口,刘阿姨的大嗓门在喊:"红烧肉最后一份了!"
郭昊撒腿就跑,像只饿狼扑向猎物。张辰和沈幼微跟在后面,脚步不紧不慢,像两个散步的人,在黄昏的校园里,走向一顿简单的晚餐。