AtCoder Beginner Contest 085 に出たんだよ

今日は速解きコンテストでしたね〜〜

僕は168位でした

1WA1REがあまりにも悲しいので精進します...

A - Already 2018

ちょっと僕はここで脳が死にました()

とりあえず4文字目変えればいいかということでクソコード

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
using namespace std;

string S;


int main()
{
    cin >> S;

    for(int i = 0;i < S.size();i++)
    {
        if(i == 3)
        {
            cout << 8;
        }
        else 
            cout << S[i];
    }

    cout << endl;
    return 0;
}

B - Kagami Mochi

種類の数をカウントすればいいですね

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
using namespace std;

int memo[110];
int N;

int main()
{
    cin >> N;
    int cou = 0;
    int d;
    for(int i = 0;i < N;i++)
    {
        cin >> d;
        if(memo[d] == 0)
        {
            cou++;
            memo[d] = 1;
        }
    }

    cout << cou << endl;
    return 0;
}

C - Otoshidama

ここで1WA生やしました

お札は1枚以上という謎の制約をしていた...

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
using namespace std;

int N;
int Y;

int main()
{
    cin >> N >> Y;

    Y /= 1000;

    for (int ten = 0; ten <= N; ten++)
    {
        int remain = N - ten;
        for (int five = 0; five <= remain; five++)
        {
            int one = N - ten - five;

            if(one + five * 5 + ten * 10 == Y)
            {
                cout << ten << " " << five << " " << one << endl;
                return 0;
            }
        }
    }

    cout << "-1 -1 -1" << endl;
    return 0;
}

D - Katana Thrower

a[i]で最大のものをA_MAXとします

最も効率よく敵のHPを削るには,bとA_MAXを使えば良いです

1.bを大きい順に選んでいき、A_MAX以上のものであれば使う

2.A_MAXより小さくなったら、後はA_MAXでひたすら殴る

という感じですかね

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
using namespace std;

typedef long long ll;

ll A_MAX = -1;
ll B[100000];

int N;
ll H;

int main()
{
    cin >> N;
    cin >> H;

    ll a,b;

    for(int i = 0;i < N;i++)
    {
        cin >> a >> b;
        A_MAX = max(A_MAX,a);
        B[i] = b;
    }

    sort(B,B + N);

    int result = 0;

    int cou = N - 1;
    while(A_MAX < B[cou] && 0 <= cou )
    {
        H -= B[cou];
        cou--;
        result++;
        if(H <= 0)
        {
            cout << result << endl;
            return 0;
        }
    }


    int temp = H / A_MAX;
    if(H % A_MAX != 0) temp++;
    result += temp;

    cout << result << endl;
    return 0;
}

これでおしまい!!