きままにものづくり

日々の気付いたことなんかを書いてます。

ARCのA問題を解いてみた ~その3~

こんにちは、even_ekoです。
昨日ようやく、なめらかな曲線を描くアルゴリズムを発見しました。
大変でしたが、曲線がスルスルと描けた時は感動ものです。
しかし、また壁にぶつかってしまいました。今度は、アルゴリズムの問題ではなくOpenGLESの知識不足からくる問題です。
本と格闘しながら、解決策を見つけていきたいです。

さて、今日も前回前々回に続きAtCoder Regular ContestのA問題の解答です。

#005のA問題

#include <iostream>
#include <string>
#include <vector>

int main(int argc, constchar * argv[])
{
    int N;
    int count=0;
    std::cin >> N;
    std::vector <std::string> str;
    str.resize(N);
    
    for (int i=0; i<N; i++) {
        std::cin >> str[i];
        if (i == N-1) {
            str[i].erase(str[i].length()-1);
        }
        
        if (!(str[i].compare("TAKAHASHIKUN")))
            count++;
        if (!(str[i].compare("Takahashikun")))
            count++;
        if (!(str[i].compare("takahashikun")))
            count++;
    }
    
    std::cout << count << '\n';
    
    return0;
}

#006のA問題

#include <iostream>

int main(int argc, constchar * argv[])
{
    int E[6];
    int B;
    int L[6];
    bool bonus = false;
    int count = 0;
    
    for (int i=0; i<6; i++) {
        std::cin >> E[i];
    }
    std::cin >> B;
    for (int i=0; i<6; i++) {
        std::cin >> L[i];
    }

    for (int i=0; i<6; i++) {
        if (L[i] == B) 
            bonus = true;
        for (int j=0; j<6; j++) {
            if (E[i]<L[j]) 
                break;
            if (E[i] == L[j]) 
                count++;
        }
    }
    
    switch (count) {
        case6:
            std::cout << "1\n";
            break;
            
        case5:
            if (bonus) {
                std::cout << "2\n";
            } else {
                std::cout << "3\n";
            }
            break;
            
        case4:
            std::cout << "4\n";
            break;
            
        case3:
            std::cout << "5\n";
            break;
            
        default:
            std::cout << "0\n";
            break;
    }

    return0;
}