AtCoder 生活　46日目

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

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

|問題|難易度|自力で解けた|かかった時間|
|:-:|:-:|:-:|---|---|
|ABC075|A|◯|3分12秒|
|ABC075|B|✕|95分43秒|
|ABC073|A|◯|5分35秒|
|ABC073|B|◯|16分38秒|
|ABC072|A|◯|4分13秒|
|ABC072|B|◯|3分33秒|
|ABC070|A|◯|4分47秒|
|ABC070|B|◯|6分38秒|
|ABC159|D|✕|83分7秒|
|ABC158|D|✕|137分40秒|
|ABC154|D|✕|99分4秒|
|ABC149|D|◯|40分5秒|



##[ABC075](https://atcoder.jp/contests/abc075)

###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;
    if(a == b)cout << c << endl;
    if(a == c)cout << b << endl;
    if(b == c)cout << a << endl;
}

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


###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 h,w;
    cin >> h >> w;
    char x[h+2][w+2] = {};
    int count[h+2][w+2] = {};
    for(int i = 1; i < h+1; i++){
        for(int j = 1; j < w+1; j++){
            cin >> x[i][j];
        }
    }
    for(int i = 1; i < h+1; i++){
        for(int j = 1; j < w+1; j++){
            if(x[i][j] == '#'){
                count[i][j] += 100;
                count[i-1][j-1] += 1;
                count[i-1][j] += 1;
                count[i-1][j+1] += 1;
                count[i][j-1] += 1;
                count[i][j+1] += 1;
                count[i+1][j-1] += 1;
                count[i+1][j] += 1;
                count[i+1][j+1] += 1;
            }
        }
    }
    for(int i = 1; i < h+1; i++){
        for(int j = 1; j < w+1; j++){
            if(count[i][j] >= 100){
                cout << '#';
            }else{
                cout << count[i][j];
            }
        }
        cout << endl;
    }
}

```
解くのにかかった時間:95分43秒
感想：自力で解ききれなかった



##[ABC073](https://atcoder.jp/contests/abc073)

###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 n;
    cin >> n;
    if(n/10 == 9 || n%10 == 9) cout << "Yes" << endl;
    else cout << "No" << endl;
}

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


###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<int> x(n);
    int sum = 0;
    rep(i,n){
        int a,b;
        cin >> a >> b;
        x[i] = b-a+1;
        sum += x[i];
    }
    cout << sum << endl;
}

```
解くのにかかった時間：16分38秒


##[ABC072](https://atcoder.jp/contests/abc072)

###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 x,t;
    cin >> x >> t;
    cout << max(x-t,0) << endl;
}

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


###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(){
    string s;
    cin >> s;
    int t = s.size();
    rep(i,t){
        if(i%2 == 0)cout << s[i];
    }
    return 0;
}

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


##[ABC070](https://atcoder.jp/contests/abc070)

###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 n;
    cin >> n;
    if(n/100 == n%10) cout << "Yes" << endl;
    else cout << "No" << endl;
}

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


###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;
    int s,t;
    s = max(a,c);
    t = min(b,d);
    if(t-s < 0)cout << 0 << endl;
    else cout << t-s << endl;
}

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


##[ABC159_D](https://atcoder.jp/contests/abc159/tasks/abc159_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>;

ll s(ll n){
    return n*(n-1)/2;
}

int main(){
    int n;
    cin >> n;
    vector<int> a(n);
    rep(i,n) cin >> a[i];
    rep(i,n) a[i]--;
    vector<int> cnt(n);
    rep(i,n) cnt[a[i]]++;
    ll t = 0;
    rep(i,n){
        t += s(cnt[i]);
    }
    rep(i,n){
        ll ans = t;
        ans -= s(cnt[a[i]]);
        ans += s(cnt[a[i]]-1);
        cout << ans << endl;
    }
}

```

解くのにかかった時間：83分7秒
感想：自分で関数をあまり作りなれていない事がよく分かる。


##[ABC158_D](https://atcoder.jp/contests/abc158/tasks/abc158_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>;
using pil = pair<pii,char>;

int main(){
    string s;
    cin >> s;
    int q;
    cin >> q;
    deque<char> que;
    rep(i,s.size()) que.push_back(s[i]);
    bool r = 0;
    rep(i,q){
        int a;
        cin >> a;
        if(a == 1){
            r = 1 - r;
        }
        else if(a == 2){
            int b;
            char c;
            cin >> b >> c;
            if(b == 1 && !r) que.push_front(c);
            if(b == 1 && r) que.push_back(c);
            if(b == 2 && !r) que.push_back(c);
            if(b == 2 && r) que.push_front(c);
        }
    }
    if(r) reverse(que.begin(),que.end());
    for(auto q : que){
        cout << q;
    }
    cout << endl;
}

```

解くのにかかった時間：137分40秒
感想：dequeの使い方を今回始めて学んだ。reverseの計算時間が長いことを今回はじめて知った。


##[ABC154_D](https://atcoder.jp/contests/abc154/tasks/abc154_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,k;
    cin >> n >> k;
    vector<int> p(n);
    rep(i,n) cin >> p[i];
    rep(i,n) p[i]++;
    int m = 0;
    int s = 0;
    queue<int> q;
    rep(i,n){
        s += p[i];
        q.push(p[i]);
        if(q.size() > k){
            s -= q.front();q.pop();
        }
        if(q.size() == k){
            m = max(m,s);
        }
    }
    double ans = m;
    ans /= 2;
    cout << fixed << setprecision(10) << ans << endl; 
}

```

解くのにかかった時間：99分4秒
感想：まず期待値がどんなものかがわからなかった。そして今回queueの性質を理解できたと思う。


##[ABC149_D](https://atcoder.jp/contests/abc149/tasks/abc149_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,k;
    cin >> n >> k;
    int r,s,p;
    cin >> r >> s >> p;
    string t;
    cin >> t;
    int a = t.size();
    int ans = 0;
    for(int i = k;i < n;i++){
        if(t[i] == t[i-k])t[i] = 'm';
    }
    rep(i,a){
        if(t[i] == 'r') ans += p;
        if(t[i] == 's') ans += r;
        if(t[i] == 'p') ans += s;
    }
    cout << ans << endl;
}

```

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


###最後に
今回茶色diffの問題を何問か解いた感想として、知らないことの勉強になっていると思う。まずは確実に答えれるように努力していきたい。

難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|A|4分26秒|4問中4問|
|B|8分43秒|4問中3問|
|D|40分5秒|4問中1問|