10.05.2017

Trò chơi bốc kẹo

Trò chơi bốc kẹo là trò chơi cho 2 đối thủ. Người ta xếp N túi kẹo vòng quanh một chiếc bàn tròn và đánh số liên tiếp theo chiều kim đồng hồ từ 1 đến N bắt đầu từ một túi kẹo bất kỳ. Túi thứ i có ai cái kẹo. Hai đối thủ luân phiên thực hiện nước đi, mỗi nước đi phải lấy 1 túi kẹo. Đối thủ thứ nhất, là người thực hiện nước đi đầu tiên, được chọn và lấy 1 trong N túi kẹo. Tiếp theo, đối thủ đến lượt thực hiện nước đi phải chọn túi kẹo ở sát cạnh vị trí túi kẹo mà đối thủ thực hiện nước đi ngay trước đó vừa lấy. Trò chơi kết thúc khi trên mặt bàn không còn túi kẹo nào cả.
Yêu cầu: Cho biết chỉ số của túi kẹo mà đối thủ nhất lấy đi trong nước đi đầu tiên. Hãy tính tổng số kẹo lớn nhất mà đối thủ thứ hai có thể lấy được khi tham gia trò chơi này.Dữ liệu vào từ file văn bản GAME.INP
   -  Dòng đầu tiên chứa số lượng túi kẹo N ( 1 <= N <= 1000).
   -  Dòng thứ hai chứa số nguyên dương k là chỉ số của túi kẹo mà đối thủ thứ nhất chọn và lấy trong nước đi đầu tiên.
   -  Dòng thứ i trong số N dòng tiếp theo chứa số nguyên dương ai (ai <= 32767 ),  i  = 1, 2, ... N.
Kết quả: Ghi ra file văn bản GAME.OUT tổng số kẹo lớn nhất tìm được.
   Ví dụ:
      GAME.INP   GAME.OUT   
              5                  11
             1
             2
             2
             3
             9
             5 

                                                           Lời giải tham khảo

Program game;
  Var a:array [1..1000] of integer;
     i,k,m,n:integer;
     f:Text;
  Procedure doc;
    begin
      Assign(f,'game.inp');
      Reset(f);
      Readln(f,n);
      Readln(f,m);
      For i:=1 to n do Readln(f,a[i]);
      Close(f);
    end;
  Procedure tinh;
    begin
      k:=0;
      if m mod 2=0 then
        begin
          For i:=1 to n do
            if i mod 2=1 then k:=k+a[i];
        end
      else
          For i:=1 to n do
            if i mod 2=0 then k:=k+a[i];
    end;
  Procedure ghi;
    begin
      Assign(f,'game.out');
      Rewrite(f);
      Writeln(f,k);
      Close(f);
    end;
Begin
  doc;
  tinh;
  ghi;
End.

No comments:

Post a Comment

Cảm ơn bạn đã nhận xét