当前位置: 代码迷 >> 综合 >> 2062. 【2016.10.4NOIP普及模拟】Bill
  详细解决方案

2062. 【2016.10.4NOIP普及模拟】Bill

热度:13   发布时间:2023-10-09 11:55:55.0

题目描述

 大家都知道,高三的同学很辛苦,需要补充很多营养。但是由于CZYZ高三教室在4楼和5楼,而高一教室在1楼和2楼,所以导致高三同学总是很难到想吃的东西。又由于D,G,Z的动作总是很慢,所以想吃到不错的午餐更是艰难。所以自从不用上课,X就承担下了代购午餐的任务。但是由于X不上晚自习,不能代购晚餐,所以大家商议决定每周轮流留一张饭卡给X。可是计划赶不上变化,期间出现了忘换饭卡之类的一系列问题,导致了账目的混乱,于是X又承担下了记录账目的任务。每天被账目搞得一团糟的X想请你帮她写一个程序,来清楚地记账。

输入

 第1行一个整数n(0<n≤10000), 表示需要记录账目天数。第2至n行每行两个字母(只含D,G,Z),表示前一个同学欠后一个同学一顿饭,字母之间有一个空格。

输出

共3行,每行一个字母和一个数字,之间有一个空格,行末无空格。
第1行D x1
第2行G x2
第3行Z x3
Xi为正数是表示该同学欠了别人xi顿;0表示该同学既不欠人,也不被欠;负数表示该同学被欠xi顿。

样例输入

5
D G
G D
G Z
D G
D Z

样例输出

D 2
G 0
Z -2

数据范围限制

题解:

我也不想多说什么,突然发现的规律,写完后测了几个点,没问题就交了······

代码:

varn,i:longint;x,y,z:char;a:array[1..3] of longint;
beginassign(input,'bill.in');reset(input);assign(output,'bill.out');rewrite(output);readln(n);for i:=1 to n dobeginreadln(x,z,y);if x='D' then inc(a[1]);if x='G' then inc(a[2]);if x='Z' then inc(a[3]);if y='D' then dec(a[1]);if y='G' then dec(a[2]);if y='Z' then dec(a[3]);end;writeln('D ',a[1]);writeln('G ',a[2]);writeln('Z ',a[3]);close(input);close(output);
end.