寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

アルゴ式(beta版): C++による「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 2 回)の解答例

アルゴ式(beta版)の「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 2 回)からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。

C++による「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 2 回)の解答例

僕が作成、提出したコードは、以下のとおりです。

・問題 1: 帰省

algo-method.com

/*
C++による「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 2 回)の解答例
問題 1: 帰省
https://algo-method.com/tasks/374
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int a,b,c;
    cin>>a>>b>>c;
    if(a<=c && c<b){
        cout<<1<<endl;
    }else{
        cout<<0<<endl;
    }
    return 0;
}
・問題 2: ビ太郎と IOI

algo-method.com

/*
C++による「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 2 回)の解答例
問題 2: ビ太郎と IOI
https://algo-method.com/tasks/375
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    cin>>n;
    string s;
    cin>>s;
    bool tf1,tf2,flag;
    tf1=tf2=flag=false;
    for(int i=0;i<n;i++){
        if(s[i]=='I'){
            tf1=true;
        }
        if(s[i]=='O' && tf1==true){
            tf2=true;
        }
        if(s[i]=='I' && tf1==true && tf2==true){
            flag=true;
        }
    }
    if(flag){
        cout<<"Yes"<<endl;
    }else{
        cout<<"No"<<endl;
    }
    return 0;
}
・問題 3: 分割

algo-method.com

/*
C++による「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 2 回)の解答例
問題 3: 分割
https://algo-method.com/tasks/376
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    cin>>n;
    int m=-1;
    vector<int> a(n);
    for(int i=0;i<n;i++){
        cin>>a[i];
        m=max(m,a[i]);
    }
    int a1=0,a2=0,mi=0;
    for(int i=0;i<n;i++){
        if(a[i]==m){
            mi=i;
        }
    }
    for(int i=0;i<n;i++){
        if(i<mi){
            a1+=a[i];
        }else if(i>mi){
            a2+=a[i];
        }
    }
    cout<<a1<<endl;
    cout<<a2<<endl;
    return 0;
}

設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com

またAtCoder Problemsにも同じ問題が公開されています。

・A - 帰省 (Homecoming)

atcoder.jp

・B - ビ太郎と IOI (Bitaro and IOI)

atcoder.jp

・C - 分割 (Split)

atcoder.jp