AtCoder 生活　48日目

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

#48日目
今回は、A問題を4問、B問題を4問、C問題を1問、D問題を3問解きました。

|問題|難易度|自力で解けた|かかった時間|
|:-:|:-:|:-:|---|---|
|ABC039|A|◯|3分15秒|
|ABC039|B|◯|6分9秒|
|ABC038|A|◯|7分59秒|
|ABC038|B|◯|12分41秒|
|ABC037|A|◯|8分50秒|
|ABC037|B|◯|25分33秒|
|ABC036|A|◯|7分4秒|
|ABC036|B|◯|24分12秒|
|ABC143|D|✕|168分51秒|
|ABC136|D|✕|152分38秒|
|ABC131|D|◯|58分44秒|
|ABC123|C|✕|90分47秒|


##[ABC039](https://atcoder.jp/contests/abc039)

###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;
    cin >> a >> b >> c;
    int s,t,r;
    s = a*b;
    t = b*c;
    r = c*a;
    cout << s*2+t*2+r*2 << endl;
}

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


###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>;
using pil = pair<pii,int>;


int main(){
    int x;
    cin >> x;
    int n = pow(x,0.25);
    cout << n << endl;
}

```
解くのにかかった時間：6分9秒


##[ABC038](https://atcoder.jp/contests/abc038)

###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 t = s.size();
    if(s[t-1] == 'T') cout << "YES" << endl;
    else cout << "NO" << endl;
}

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


###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>;
using pil = pair<pii,int>;


int main(){
    int a,b,c,d;
    cin >> a >> b >> c >> d;
    if(a == c || a == d || b == c || b == d) cout << "YES" << endl;
    else cout << "NO" << endl;
}

```
解くのにかかった時間：12分41秒


##[ABC037](https://atcoder.jp/contests/abc037)

###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;
    cin >> a >> b >> c;
    int m = min(a,b);
    cout << c/m << endl;
}

```
解くのにかかった時間：8分50秒


###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>;
using pil = pair<pii,int>;


int main(){
    int n,q;
    cin >> n >> q;
    vector<int> a(n);
    vector<int> l(q),r(q),t(q);
    rep(i,q)cin >> l[i] >> r[i] >> t[i];
    rep(i,q){
        for(int j = l[i]-1;j < r[i];j++){
            a[j] = t[i];
        }
    }
    rep(i,n) cout << a[i] << endl;
}

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


##[ABC036](https://atcoder.jp/contests/abc036)

###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;
    cin >> a >> b;
    if(b%a == 0)cout << b/a << endl;
    else cout << b/a+1 << endl;
}

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


###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>;
using pil = pair<pii,int>;


int main(){
    int n;
    cin >> n;
    vector<vector<char>> s(n,vector<char>(n));
    rep(i,n){
        rep(j,n) cin >> s[i][j];
    }
    rep(j,n){
        for(int i = n-1;i >= 0;i--) cout << s[i][j];
        cout << endl;
    }
}

```
解くのにかかった時間：24分12秒


##[ABC143_D](https://atcoder.jp/contests/abc143/tasks/abc143_d)

```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;
    cin >> n;
    vector<int> l(n);
    rep(i,n) cin >> l[i];
    int ans = 0;
    sort(l.begin(),l.end());
    rep(b,n){
        int r = b+1;
        rep(a,b){
            int ab = l[a]+l[b];
            while(r < n && l[r] < ab)r++;
            int l = b+1;
            ans += max(0,r-l);
        }
    }
    cout << ans << endl;
    return 0;
}

```

解くのにかかった時間：168分51秒
感想：二分探索が微妙にどのようなものなのか理解できていない。


##[ABC136_D](https://atcoder.jp/contests/abc136)

```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;
    n = s.size();
    vector<int> ans(n);
    rep(j,2){
        int cnt = 0;
        rep(i,n){
            if(s[i] == 'R')cnt++;
            else{
                ans[i] += cnt/2;
                ans[i-1] += (cnt+1)/2;
                cnt = 0;
            }
        }
        reverse(ans.begin(),ans.end());
        reverse(s.begin(),s.end());
        rep(i,n){
            if(s[i] == 'L') s[i] = 'R';
            else s[i] = 'L';
        }
    }
    rep(i,n){
        cout << ans[i] << endl;
    }
}

```

解くのにかかった時間：152分38秒
感想：理解するのにかなり時間がかかった。


##[ABC131_D](https://atcoder.jp/contests/abc131/tasks/abc131_d)

```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;
    cin >> n;
    vector<pii> x(n);
    rep(i,n){
        int a,b;
        cin >> a >> b;
        x[i].first = b;
        x[i].second = a;
    }
    int t = 0;
    sort(x.begin(),x.end());
    bool ok = true;
    rep(i,n){
        t += x[i].second;
        if(t > x[i].first)ok = false;
    }
    if(ok) cout << "Yes" << endl;
    else cout << "No" << endl;
}




```

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


##[ABC123_C](https://atcoder.jp/contests/abc123/tasks/abc123_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(){
    ll n,a,b,c,d,e;
    cin >> n >> a >> b >> c >> d >> e;
    ll q = (n-1)/a;
    ll r = (n-1)/b;
    ll s = (n-1)/c;
    ll t = (n-1)/d;
    ll u = (n-1)/e;
    cout << max({q,r,s,t,u}) + 5 << endl;
}

```

解くのにかかった時間：90分47秒
感想：解を見て、こんなに短くなっていることに驚いた。


###最後に
茶色diffの問題を解けるように努力していきたい。

難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|A|6分35秒|4問中4問|
|B|16分35秒|4問中4問|
|D|58分44秒|3問中1問|