トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
CODE FESTIVAL 2016予選B B Qualification simulator
■■■問題■■■
CODE FESTIVAL 2016の予選にはN人が参加しました。
参加者は、国内の学生であるか、海外の学生であるか、どちらでもないかのどれかです。
予選は国内または海外の学生のみが通過することができ、
上位の学生から順に、以下の条件を満たすときに通過します。
学生でない参加者は予選を通過できません。
●国内の学生は、現在予選の通過が確定した参加者がA+B人に満たなければ、予選を通過する
●海外の学生は、現在予選の通過が確定した参加者がA+B人に満たず、
さらに海外の学生の中での順位がB位以内なら、予選を通過する
参加者の情報を表す文字列Sが与えられます。
Sのi文字目がaのとき予選でi位の参加者が国内の学生であることを、
Sのi文字目がbのとき予選でi位の参加者が海外の学生であることを、
Sのi文字目がcのとき予選でi位の参加者がそのどちらでもないことを表しています。
すべての参加者について、
上位から順に、予選を通過した場合はYes、そうでない場合はNoを出力するプログラムを作成してください。
■■■入力■■■
N A B
S
●1 <= N,A,B <= 10万
●A+B <= N
●Sの長さはNである。
●Sは文字aとbとcのみからなる。
■■■出力■■■
N行出力せよ。
i行目には、i位の参加者が予選を通過した場合Yes、そうでない場合Noを出力せよ。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "InputX";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("10 2 3");
WillReturn.Add("abccabaabb");
//Yes
//Yes
//No
//No
//Yes
//Yes
//Yes
//No
//No
//No
//1,2,5,6,7位の参加者が予選を通過します
}
else if (InputPattern == "Input2") {
WillReturn.Add("12 5 2");
WillReturn.Add("cabbabaacaba");
//No
//Yes
//Yes
//Yes
//Yes
//No
//Yes
//Yes
//No
//Yes
//No
//No
//6位の参加者は海外の学生の中で3位なので、予選を通過しません
}
else if (InputPattern == "Input3") {
WillReturn.Add("5 2 2");
WillReturn.Add("ccccc");
//No
//No
//No
//No
//No
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
int[] wkArr = InputList[0].Split(' ').Select(X => int.Parse(X)).ToArray();
int A = wkArr[1];
int B = wkArr[2];
string S = InputList[1];
int TuukaCnt = 0;
int KaigaiJyuni = 0;
for (int I = 0; I <= S.Length - 1; I++) {
if (S[I] == 'a') {
if (TuukaCnt < A + B) {
TuukaCnt++;
Console.WriteLine("Yes");
}
else Console.WriteLine("No");
}
if (S[I] == 'b') {
KaigaiJyuni++;
if (TuukaCnt < A + B && KaigaiJyuni <= B) {
TuukaCnt++;
Console.WriteLine("Yes");
}
else Console.WriteLine("No");
}
if (S[I] == 'c') Console.WriteLine("No");
}
}
}
解説
ナイーブにシュミレーションしてます。