AtCoder 生活　22日目

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

#22日目
今回は、A問題を5問、B問題を5問、C問題を2問解きました

|問題番号|難易度|自力で解けた|かかった時間|
|---|:-:|:-:|---|---|
|ABC109|A|◯|6分37秒|
|ABC110|A|◯|9分6秒|
|ABC111|A|◯|12分17秒|
|ABC112|A|◯|4分19秒|
|ABC113|A|◯|3分1秒|
|ABC112|B|◯|49分22秒|
|ABC113|B|✕|97分17秒|
|ABC114|B|✕|100分59秒|
|ABC115|B|◯|18分8秒|
|ABC116|B|✕|39分4秒|
|ABC142|C|✕|98分33秒|
|ABC143|C|◯|16分14秒|


## ABC109_A

問題:[ABC333]
(https://atcoder.jp/contests/abc109/tasks/abc109_a)


```c++

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

int main(){
    int a,b;
    cin >> a >> b;
    if( (a*b) % 2 == 0) cout << "No" << endl;
    else cout << "Yes" << endl;
}

```

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


## ABC110_A

問題:[Maximize the Formula]
(https://atcoder.jp/contests/abc110/tasks/abc110_a)


```c++

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

int main(){
    int a,b,c;
    cin >> a >> b >> c;
    int m = max(max(a,b),c);
    cout << m*10 + a + b + c - m << endl;
}

```

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


## ABC111_A

問題:[AtCoder Beginner Contest 999]
(https://atcoder.jp/contests/abc111/tasks/abc111_a)


```c++

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

int main(){
    int n;
    cin >> n;
    cout << 1110 - n << endl;
}

```

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


## ABC112_A

問題:[Programming Education]
(https://atcoder.jp/contests/abc112/tasks/abc112_a)


```c++

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

int main(){
    int n,a,b;
    cin >> n;
    cin >> a;
    cin >> b;
    if(n == 1){
        cout << "Hello World" << endl;
        return 0;
    }
    cout << a + b << endl;
}

```

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



## ABC113_A

問題:[Discount Fare]
(https://atcoder.jp/contests/abc113/tasks/abc113_a)


```c++

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

int main(){
    int x,y;
    cin >> x >> y;
    cout << x + y/2 << endl;
}

```

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

## ABC112_B

問題:[Time Limit Exceeded]
(https://atcoder.jp/contests/abc112/tasks/abc112_b)


```c++

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

int main(){
    int N,T;
    cin >> N >> T;
    int ans = 1001;
    vector<int> c(N),t(N);
    rep(i,N)cin >> c[i] >> t[i];
    rep(i,N){
        if(t[i] <= T){
            ans = min(ans,c[i]);
        }
    }
    if(ans <= 1000)cout << ans << endl;
    else cout << "TLE" << endl;
}

```

解くのにかかった時間：49分22秒


## ABC113_B

問題:[Palace]
(https://atcoder.jp/contests/abc113/tasks/abc113_b)


```c++

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

int main(){
    int n,t,a;
    cin　>>　n　>>　t　>> a;
    int h,ans = -1;
    double san = 100000;
    rep(i,n){
        cin >> h;
        double tem = abs(t - h * 0.006 - a);
        if(san > tem){
            san = tem;
            ans = i;
        }
    }
    cout << ans + 1 << endl;
}


```

解くのにかかった時間：97分17秒
感想：下のように書いていたのですが終ぞなんで間違っていたのかわかりませんでした。サンプルは正常に動いたのでなんでか全然わかりません。だれかなんで駄目だったのか教えていただけると幸いです。

```c++
#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0;i < (n);i++)
using namespace std;
typedef long long ll;
 
int main(){
    int n;
    cin >> n;
    int t,a;
    cin >> t >> a;
    vector<int> h(n);
    rep(i,n) cin >> h[i];
    int s = pow(10,5);
    int ans;
    rep(i,n){
        double p = t - h[i] * 0.006;
        int d = abs(p - a);
        s = min(d,s);
        if(s == d) ans = i+1;
    }
    cout << ans << endl;
}
```

## ABC114_B

問題:[754]
(https://atcoder.jp/contests/abc114/tasks/abc114_b)


```c++

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

int main() {
    string s;
    cin >> s;
    int n = s.size();
    int t = stol(s);
    vector<int> v(n);
    rep(i,n){
        v[i] = t%10;
        t /= 10;
    }
    reverse(v.begin(),v.end());
    int ans = 1000,num = 0;
    rep(i,n-2){
        num = v[i]*100 + v[i+1]*10 + v[i+2];
        ans = min(ans,abs(num-753));
    }
    cout << ans << endl;
}

```

解くのにかかった時間：100分59秒
感想：string型をint型にすると言う発想が出てこなかった。

## ABC115_B

問題:[Christmas Eve Eve]
(https://atcoder.jp/contests/abc115/tasks/abc115_b)


```c++

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

int main(){
    int n;
    vector<int> p(n);
    rep(i,n) cin >> p[i];
    int m = 100;
    int sum = 0;
    rep(i,n){
        sum += p[i];
        m = max(m,p[i]);
    }
    cout << sum - m/2 << endl;
}

```

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


## ABC116_B

問題:[Collatz Problem]
(https://atcoder.jp/contests/abc116/tasks/abc116_b)


```c++

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

int f(int x){
    if (x % 2 == 0){
        return x/2;
    }
    else{
        return 3 * x + 1;
    }
}
 
int main(){
    int s;
    cin >> s;
    if (s == 1 || s == 2 || s == 4){
    cout << 4 << endl;
    }
    else{
        int count = 1;
  	    int flag = 0;
  	    while (flag == 0){
            s = f(s);
            count ++;
            if (s == 4){
                cout << count + 3 << endl;
                flag = 1;
            }
        }
    }
}

```

解くのにかかった時間：39分4秒
最終的には1，2，4でループしていることに気づかなくて解くことが出来なかった


## ABC142_C

問題:[Go to School]
(https://atcoder.jp/contests/abc142/tasks/abc142_c)


```c++

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

int main(){
    int n;
    cin >> n;
    vector<int> a(n);
    rep(i,n) {
        cin >> a[i]; 
    }
    vector<int> num(n);
    rep(i,n) num[A[i]-1] = i+1;
    rep(i,n) cout << num[i] << endl;
}

```

解くのにかかった時間：98分33秒
感想：解説を見たときかなり混乱した


## ABC143_C

問題:[Slimes]
(https://atcoder.jp/contests/abc143/tasks/abc143_c)


```c++

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

int main(){
    int n;
    string s;
    cin >> n >> s;
    string ans = "";
    rep(i,n){
        if(s[i] == s[i+1]) continue;
        else ans.push_back(s[i+1]);
    }
    cout << ans.size() << endl;
}

```

解くのにかかった時間：16分14秒
感想：一回手元でどのように操作すれば解にたどり着けれるのかを考えるとたどり着けた。


###最後に
A問題は平均7分4秒、B問題は平均33分30秒、C問題は16分14秒で解き終わりました。
Bは解けませんでしたが、Cが解けるように少しなっているのかと思います。時期によってはCのほうがBより簡単ではないかと思います。


|難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|A|7分4秒|5問中5問|
|B|33分30秒|5問中2問|
|C|16分14秒|2問中1問|