PTIT126E spoj PTIT – Bỏ phiếu

Nguồn đề bài: http://www.spoj.com/PTIT/problems/PTIT126E/

1. Đề bài PTIT126E spoj

Có một số người tham gia trong một cuộc bầu cử, lá phiếu của mỗi người được ghi lại với kí hiệu như sau:

–       Y nghĩa là đồng ý.

–       N nghĩa là không đồng ý.

–       P nghĩa là có mặt, nhưng không bỏ phiếu.

–       A nghĩa là vắng mặt.

Nhiệm vụ của bạn là từ danh sách trạng thái này, xác định kết quả của cuộc bầu cử : Nếu ít nhất một nửa số người vắng mặt, in ra “need quorum”. Ngược lại, cuộc bầu cử được tính. Nếu số người đồng ý lớn hơn số người không đồng ý, in ra “yes”. Nếu số người không đồng ý lớn hơn số người đồng ý, in ra ‘’no’’. Nếu số người đồng ý bằng số người không đồng ý, in ra ‘tie’.

Input

–       Gồm nhiều bộ test, mỗi bộ test là 1 dòng chứa danh sách trạng thái của một số người tham gia cuộc bầu cử.  (2 <= Số người <= 70)

–       Bộ test kết thúc bởi dòng chứa dấu ‘#’

Output

–       Mỗi bộ test in trên 1 dòng chứa kết quả của cuộc bầu cử.

Example

Input:
YNNAPYYNY
YAYAYAYA
PYPPNNYA
YNNAA
NYAAA
#
Output:
yes
need quorum
tie
no
need quorum

2. Lời giải PTIT126E spoj PTIT – Bỏ phiếu

– Bài này chủ yếu rèn luyện về câu điều kiện, biến đếm, tư duy hiểu đề và các đọc file với số lần không biết trước.

– Các bạn chỉ cần đếm số phiếu Y, N, P, A rồi so sánh theo yêu cầu đề bài là được.

3. Code tham khảo PTIT126E spoj PTIT – Bỏ phiếu

const   fi='';
type    data=integer;
var
        f:text;
        s:string;

procedure xuli;
var     i:data;
        Y,N,P,A,tmp:data;
begin
        y:=0;
        n:=0;
        p:=0;
        a:=0;
        for i:=1 to length(s) do
                begin
                        if s[i]='Y' then
                                inc(y)
                        else
                                if s[i]='N' then
                                        inc(n)
                                else
                                        if s[i]='P' then
                                                inc(p)
                                        else
                                                inc(a);
                end;
        tmp:=n+y+p;
        if  tmp<=a then
                writeln('need quorum')
        else
                if y>n then
                        writeln('yes')
                else
                        if n>y then
                                writeln('no')
                        else
                                if n=y then
                                        writeln('tie');

end;

procedure docfile;
var     i:data;
begin
        assign(f,fi); reset(f);
        repeat
                readln(f,s);
                if s='#' then
                        begin
                                close(f);
                                exit;
                        end;
                xuli;
        until FALSE;
end;


begin
        docfile;
end.

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *