寝癖頭の解法

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

paizaラーニング: C++による「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2

paizaラーニングのレベルアップ問題集「線形探索メニュー」からの出典です。
paiza.jp
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集と、それらの提出コードの解答例です。

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

・STEP: 1 偶数の探索

/*
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集
STEP: 1 偶数の探索
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    cin>>n;
    vector<int> a(n);
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<n;i++){
        if(a[i]%2==0){
            cout<<i+1<<endl;
            return 0;
        }
    }
}

・STEP: 2 奇数の探索

/*
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集
STEP: 2 奇数の探索
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    cin>>n;
    vector<int> a(n);
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=n-1;i>=0;i--){
        if(a[i]%2==1){
            cout<<i+1<<endl;
            return 0;
        }
    }
}

・STEP: 3 条件付き最小値

/*
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集
STEP: 3 条件付き最小値
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n,k;
    cin>>n;
    vector<int> a(n),b;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    cin>>k;
    for(int i=0;i<n;i++){
        if(a[i]>=k){
            b.push_back(a[i]);
        }
    }
    sort(b.begin(),b.end());
    cout<<b[0]<<endl;
    return 0;
}

・STEP: 4 条件付き最大値

/*
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集
STEP: 4 条件付き最大値
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n,k;
    cin>>n;
    vector<int> a(n),b;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    cin>>k;
    for(int i=0;i<n;i++){
        if(a[i]<=k){
            b.push_back(a[i]);
        }
    }
    sort(b.begin(),b.end(),greater<int>());
    cout<<b[0]<<endl;
    return 0;
}

・STEP: 5 点と点の距離

/*
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集
STEP: 5 点と点の距離
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n,k,cnt=0;
    cin>>n;
    vector<int> x(n),y(n);
    for(int i=0;i<n;i++){
        cin>>x[i]>>y[i];
    }
    cin>>k;
    for(int i=0;i<n;i++){
        int dis1=abs(x[i]-x[n-1]);
        int dis2=abs(y[i]-y[n-1]);
        int dis=dis1+dis2;
        if(dis<=k){
            cnt++;
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・STEP: 6 長方形に含まれる点

/*
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集
STEP: 6 長方形に含まれる点
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n;
    cin>>n;
    vector<int> x(n),y(n);
    for(int i=0;i<n;i++){
        cin>>x[i]>>y[i];
    }
    int xs,xt,ys,yt;
    cin>>xs>>xt>>ys>>yt;
    int cnt=0;
    for(int i=0;i<n;i++){
        if((xs<=x[i] && x[i]<=xt)
          && (ys<=y[i] && y[i]<=yt)){
            cnt++;
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・STEP: 7 成績優秀者の列挙 1

/*
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集
STEP: 7 成績優秀者の列挙 1
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n,k;
    cin>>n;
    vector<string> s(n);
    vector<int> t(n);
    for(int i=0;i<n;i++){
        cin>>s[i]>>t[i];
    }
    cin>>k;
    for(int i=0;i<n;i++){
        if(t[i]>=k){
            cout<<s[i]<<endl;
        }
    }
    return 0;
}

・FINAL問題 【特殊な探索】 成績優秀者の列挙 2

/*
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集
FINAL問題 【特殊な探索】 成績優秀者の列挙 2
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n,k,l;
    cin>>n;
    vector<string> s(n);
    vector<int> t(n);
    for(int i=0;i<n;i++){
        cin>>s[i]>>t[i];
    }
    cin>>k>>l;
    for(int i=0;i<n;i++){
        if(k<=t[i] && t[i]<=l){
            cout<<s[i]<<endl;
        }
    }
    return 0;
}

paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。