頭良くなりたい人

文系大学生shadeのブログです。競技プログラミングや人文学の話題,受験ネタなど。

CODE FESTIVAL 2016 qual B B - Qualification simulator

問題はこちら
atcoder.jp

指針

問題文中の

国内の学生は、現在予選の通過が確定した参加者がA+B人に満たなければ、予選を通過する
海外の学生は、現在予選の通過が確定した参加者がA+B人に満たず、さらに海外の学生の中での順位がB位以内なら、予選を通過する

を忠実に実装していきます。
「現在予選の通過が確定した海外の学生がB人に満たない」と言えばいいところを,「海外の学生の中での順位がB位以内」という表現を使っているのはなぜだろうかとちょっと考えましたが,同義と捉えて問題ないです(ですよね?)。

コード

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    int n,a,b;
    cin>>n>>a>>b;
    string s;
    cin>>s;
    vector<string>  result(n);
    int q_all=0,q_alien=0;
 
    for(int i=0; i<n; i++){
        if(s.at(i)=='a'){
            if(q_all<a+b){
                result.at(i)="Yes";
                q_all++;
            }else{
                result.at(i)="No";
            }
        }else if(s.at(i)=='b'){
            if(q_all<a+b && q_alien<b){
                result.at(i)="Yes";
                q_all++;
                q_alien++;
            }else{
                result.at(i)="No";
            }
        }else if(s.at(i)=='c'){
            result.at(i)="No";
        }
    }
 
    for(int i=0; i<n; i++){
        cout<<result.at(i)<<endl;
    }
}