AtCoder 生活　39日目

[前回](https://qiita.com/flandrescarlet237/items/b3eb19437436d6341de8)

#39日目
今回は、[AtcoderProblemsのBoot camp for Beginners](https://kenkoooo.com/atcoder/#/training)のEasy問題を8問解きました。

|問題|難易度|自力で解けた|かかった時間|
|:-:|:-:|:-:|---|---|
|AGC003|A|◯|13分7秒|
|AGC037|A|✕|179分41秒|
|三井住友信託銀行プログラミングコンテスト2019|C|◯|19分43秒|
|ABC042|B|◯|5分32秒|
|AGC021|A|✕|62分6秒|
|ABC095|C|◯|42分53秒|
|ABC115|C|◯|13分58秒|
|AGC012|A|◯|25分15秒|


##[AGC003_A](https://atcoder.jp/contests/agc003/tasks/agc003_a)

```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;
using ll = long long;
using pii = pair<int,int>;

int main(){
    string a;
    cin >> a;
    int n = 0,w = 0,s = 0,e = 0;
    rep(i,a.size()){
        if(a[i] == 'N')n = 1;
        else if(a[i] == 'W')w = 1;
        else if(a[i] == 'S')s = 1;
        else if(a[i] == 'E')e = 1;
    }
    if(s == n && w == e) cout << "Yes" << endl;
    else cout << "No" << endl;
}

```

解くのにかかった時間：13分7秒

##[AGC037_A](https://atcoder.jp/contests/agc037/tasks/agc037_a)

```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;
using ll = long long;
using pii = pair<int,int>;

int main(){
    string s;
    cin >> s;
    int n = s.size();
    if(n == 1){
        cout << 1 << endl;
        return 0;
    }
    if(n == 2){
        if(s[0] == s[1]){
            cout << 1 << endl;
        }
        else{
            cout << 2 << endl;
        }
        return 0;
    }
    int dp[n]{0};
    dp[0] = 1;
    if(s[0] == s[1]){
        dp[1] = 1; 
    }
    else{
        dp[1] = 2;
    }
    if(s[0] != s[1] && s[1] != s[2]){
        dp[2] = 3;
    }
    else{
        dp[2] = 2;
    }
    for(int i = 3;i < n;i++){
        if(s[i-1] == s[i]){
            dp[i] = dp[i-3] + 2;
        }
        else{
            dp[i] = dp[i-1] + 1;
        }
    }
    cout << dp[n-1] << endl;
}

```

解くのにかかった時間：179分41秒
感想：これは簡単な問題ではない気がする。動的計画法はdiffが灰色でいいのか？


##[三井住友信託銀行プログラミングコンテスト2019_C](https://atcoder.jp/contests/sumitrust2019/tasks/sumitb2019_c)

```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;
using ll = long long;
using pii = pair<int,int>;

int d[6] = {5,4,3,2,1,0};

int main(){
    int x;
    cin >> x;
    int s = x/100;
    x %= 100;
    rep(j,s){
        rep(i,6){
            if(x >= d[i]){
                x -= d[i];
                break;
            }
        }
    }
    if(x == 0) cout << 1 << endl;
    else cout << 0 << endl;
}

```

解くのにかかった時間：19分43秒


##[ABC042_B](https://atcoder.jp/contests/abc042/tasks/abc042_b)

```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;
using ll = long long;
using pii = pair<int,int>;

int main(){
    int n,l;
  	cin >> n >> l;
    vector<string> s(n);
    rep(i,n) cin >> s[i];
    sort(s.begin(),s.end());
    rep(i,n) cout << s[i];
}


```

解くのにかかった時間：5分32秒


##[AGC021_A](https://atcoder.jp/contests/agc021/tasks/agc021_a)

```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;
using ll = long long;
using pii = pair<int,int>;

int main(){
    ll n;
    int s = 0; 
    cin >> n;
    int cnt = 1;
    while(n > 9){
        if(n%10 != 9) s = 1;
        n /= 10;
        cnt++;
    }
    if(s == 0) cout << n + 9*(cnt-1) << endl;
    else{
        cout << n + 9*(cnt-1)-1 << endl;
    }
}

```

解くのにかかった時間：62分6秒
感想：計算方法に悩んでしまった。


##[ABC095_C](https://atcoder.jp/contests/abc095/tasks/arc096_a)

```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;
using ll = long long;
using pii = pair<int,int>;

int main(){
    int a,b,c,x,y,s,t,r;
    cin >> a >> b >> c >> x >> y;
   	if(x >= y){
    	s = (2*c*y + (x-y)*a);
    } 
    else{
     	s = (2*c*x + (y-x)*b);
    }
    t = (a*x + b*y);
    r = c*max(x,y)*2;
    cout << min({s,t,r}) << endl;
}

```

解くのにかかった時間：42分53秒


##[ABC115_C](https://atcoder.jp/contests/abc115/tasks/abc115_c)

```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;
using ll = long long;
using pii = pair<int,int>;

int main(){
    int n,k;
    cin >> n >> k;
    vector<int> h(n);
    rep(i,n) cin >> h[i];
    sort(h.begin(),h.end());
    int ans = 2e9;
    rep(i,n-k+1){
        ans = min(ans,(h[i+k-1]-h[i]));
    }
    cout << ans << endl;
}

```

解くのにかかった時間：13分58秒


##[AGC012_A](https://atcoder.jp/contests/agc012/tasks/agc012_a)

```c++

#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;
using ll = long long;
using pii = pair<int,int>;

int main(){
    ll n;
    cin >> n;
    ll sum = 0;
    vector<ll> a(3*n);
    rep(i,3*n) cin >> a[i];
    sort(a.rbegin(),a.rend());
    rep(i,n){
        sum += a[2*i+1];
    }
    cout << sum << endl;
}


```

解くのにかかった時間：25分15秒


###最後に
AGCのA問題があまりうまく解けないのが辛い


|難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|A|19分11秒|4問中2問|
|B|5分32秒|1問中1問|
|C|25分4秒|3問中3問|