paizaラーニングのレベルアップ問題集「ソートメニュー応用編」からの出典です。
paiza.jp
C++による「ソートメニュー応用編」問題集: 区間のソートと、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・STEP: 1 ソートの基本
/* paizaラーニング: C++による「ソートメニュー応用編」問題集: 区間のソート STEP: 1 ソートの基本 https://paiza.jp/works/mondai/sort_advanced/sort_advanced__problems_simple_step0 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n; cin>>n; vector<ll> a(n),v(n); for(ll i=0;i<n;i++){ cin>>a[i]; v[i]=a[i]; } sort(v.begin(),v.end()); if(a==v){ cout<<"Yes\n"; }else{ cout<<"No\n"; } return 0; }
・STEP: 2 最大最小
/* paizaラーニング: C++による「ソートメニュー応用編」問題集: 区間のソート STEP: 2 最大最小 https://paiza.jp/works/mondai/sort_advanced/sort_advanced__problems_simple_step1 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n; cin>>n; ll MAX=-10000,MIN=10000; for(ll i=0;i<n;i++){ ll a; cin>>a; MAX=max(MAX,a); MIN=min(MIN,a); } cout<<MAX<<" "<<MIN<<endl; return 0; }
・STEP: 3 Top - k (easy)
/* paizaラーニング: C++による「ソートメニュー応用編」問題集: 区間のソート STEP: 3 Top - k (easy) https://paiza.jp/works/mondai/sort_advanced/sort_advanced__problems_simple_step2 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n,k; cin>>n>>k; vector<ll> a(n); for(ll i=0;i<n;i++){ cin>>a[i]; } sort(a.rbegin(),a.rend()); cout<<a[k-1]<<endl; return 0; }
・STEP: 4 重複削除
/* paizaラーニング: C++による「ソートメニュー応用編」問題集: 区間のソート STEP: 4 重複削除 https://paiza.jp/works/mondai/sort_advanced/sort_advanced__problems_simple_step3 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n; cin>>n; vector<ll> a; for(ll i=0;i<n;i++){ ll A;cin>>A; a.push_back(A); } sort(a.begin(),a.end()); a.erase(unique(a.begin(),a.end()),a.end()); for(ll i=0;i<a.size();i++){ cout<<a[i]<<(i==a.size()-1 ? "\n" : " "); } return 0; }
・FINAL問題: 区間のソート
/* paizaラーニング: C++による「ソートメニュー応用編」問題集: 区間のソート FINAL問題: 区間のソート https://paiza.jp/works/mondai/sort_advanced/sort_advanced__problems_simple_boss 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n,l,r; cin>>n>>l>>r; l--; r--; vector<ll> a(n); for(ll i=0;i<n;i++){ cin>>a[i]; } sort(a.begin()+l,a.begin()+r); for(ll i=0;i<n;i++){ cout<<a[i]<<(i==n-1 ? "\n" : " "); } return 0; }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。