D - Roulette 解説
by
tatyam
C++20 の Ranges ライブラリを使用した実装
新ジャッジで使えるようになった, C++20 の Ranges ライブラリを使用した実装例です.
https://atcoder.jp/contests/abc314/submissions/44540940
#include <algorithm>
#include <iostream>
#include <ranges>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector bet(N, vector<int>{});
for(auto& A : bet) {
int C;
cin >> C;
A.resize(C);
for(int& a : A) cin >> a;
}
int X;
cin >> X;
auto contains_X = views::iota(0, N) | views::filter([&](int i){ return ranges::count(bet[i], X); });
if(ranges::empty(contains_X)) {
cout << "0\n";
return 0;
}
auto min_size = ranges::min(contains_X | views::transform([&](int i){ return bet[i].size(); }));
auto ans = contains_X | views::filter([&](int i){ return bet[i].size() == min_size; });
cout << ranges::distance(ans) << '\n';
for(auto i : ans) cout << i + 1 << '\n';
}
投稿日時:
最終更新: