トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.201 yukicoderじゃんけん
■■■問題■■■
yukicoderじゃんけん とは
じゃんけんをして、ゆるふわポイントの多い方が勝ち
yukicoderじゃんけんをする二者の名前、ゆるふわポイント、じゃんけんの手が与えられるので、
勝者の名前を出力してください。
両者のゆるふわポイントが等しい場合は引き分けです。-1を出力してください。
■■■入力■■■
一行目には一人目の名前SA、ゆるふわポイントPA、出したじゃんけんの手XA、
二行目には二人目の名前SB、ゆるふわポイントPB、出したじゃんけんの手XB
が与えられます。
じゃんけんの手は'R'がグー、'S'がチョキ、'P'がパーを表します。
SA PA XA
SB PB XB
また、入力は以下の制約を満たします。
SA != SB
1 <= |SA| , |SB| <= 100
SA,SBは小文字のアルファベットa-z、大文字のアルファベットA-Zのみで構成される文字列
0 <= PA,PB < 10の10000乗
PA,PBは整数で、leading zeroは付かない
XA,XBはR,S,Pのいずれか
■■■出力■■■
勝者の名前を出力してください。ただし、引き分けの場合は-1を出力してください。
最後に改行してください。
C#のソース
using System;
using System.Collections.Generic;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("Alice 114 R");
WillReturn.Add("Bob 514 S");
//Bob
//普通のじゃんけんならば
//R(グー)を出したAliceがS(チョキ)を出したBobに勝ちますが、
//これはyukicoderじゃんけんなのでゆるふわポイントの多いBobの勝ちです。
}
else if (InputPattern == "Input2") {
WillReturn.Add("touritsu 99999999999999999999 P");
WillReturn.Add("Peter 99999999999999999998 R");
//touritsu
//ゆるふわガチ勢のtouritsuさんとPeterさんの戦いです。
//僅差ですがtouritsuさんの勝ちです。
}
else if (InputPattern == "Input3") {
WillReturn.Add("Taro 0 R");
WillReturn.Add("Hanako 0 S");
//-1
//まだ初心者の二人はゆるふわポイントを持っていません。
//0ポイント同士で引き分けです。
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
string[] wkArr = { };
Action<string> SplitAct = (pStr) => wkArr = pStr.Split(' ');
SplitAct(InputList[0]); string SA = wkArr[0], PA = wkArr[1];
SplitAct(InputList[1]); string SB = wkArr[0], PB = wkArr[1];
int MaxLen = Math.Max(PA.Length, PB.Length);
PA = PA.PadLeft(MaxLen, '0');
PB = PB.PadLeft(MaxLen, '0');
int Comp = PA.CompareTo(PB);
if (Comp > 0) Console.WriteLine(SA);
if (Comp < 0) Console.WriteLine(SB);
if (Comp == 0) Console.WriteLine(-1);
}
}
解説
0パディングして、文字として大小比較してます。