結果
問題 |
No.3010 水色コーダーさん
|
ユーザー |
|
提出日時 | 2025-01-25 16:06:44 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 28 ms / 2,000 ms |
コード長 | 7,442 bytes |
コンパイル時間 | 1,784 ms |
コンパイル使用メモリ | 159,768 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2025-01-25 23:50:24 |
合計ジャッジ時間 | 3,624 ms |
ジャッジサーバーID (参考情報) |
judge7 / judge12 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 |
ソースコード
#include <iostream> #include <algorithm> #include <cassert> #include <cmath> #include <cstdint> #include <set> #include <unordered_set> #include <map> #include <vector> #include <string> #include <deque> #include <queue> #include <iomanip> #include <ranges> #include <concepts> #include <numeric> #ifdef ATCODER #include <atcoder/modint> #include <atcoder/segtree> #include <atcoder/dsu> #endif using namespace std; using ll = long long; using pall = pair<ll,ll>; template<class T> using vec = vector<T>; template<class T> using veve = vec<vec<T>>; using vell = vec<ll>; using vebo = basic_string<bool>; using vevell = veve<ll>; template<class T> using uset = unordered_set<T>; template<class T> using mset = multiset<T>; template<class T> using priority_queue_ascend = priority_queue<T, vec<T>, greater<T>>; static const ll inf = numeric_limits<ll>::max(); static const string sp = string(" "); static const string lf = string("\n"); static const auto &npos = string::npos; static const vec<pall> grid_move4 = { {0, 1}, {-1, 0}, {0, -1}, {1, 0} }; static const vec<pall> grid_move8 = [] { auto ret = grid_move4; ret.insert(ret.end(), { {-1, 1}, {-1, -1}, {1, -1}, {1, 1} }); return ret; }(); static constexpr ll MOD = 998244353 /* 1000000007 */; #define cont continue #define br break static auto &ciN = cin; static auto &icn = cin; static auto &icN = cin; static constexpr bool ture = true; using itn = int; #ifdef ATCODER using namespace atcoder; using mint = static_modint<MOD>; #endif #if 202000L <= __cplusplus #define times(N) static_assert(is_integral_v<decltype((N) + 0)>, "times(): N must be integral"); for([[maybe_unused]] const auto &_N = (N); [[maybe_unused]] const decltype(_N + 0) _c: views::iota(decltype(_N + 0)(0), _N)) #else #define times(N) static_assert(is_integral_v<decltype((N) + 0)>, "times(): N must be integral"); for(bool _ = true;_;) for([[maybe_unused]] const auto &_N = (N);_;_ = false) for(decltype(_N + 0) _c = 0;_c != _N;_c += 1) #endif #ifdef ATCODER template<int M> istream &operator>>(istream &in, static_modint<M> &i) { ll tmp; in >> tmp; i = tmp; return in; } template<int M> ostream &operator<<(ostream &out, const static_modint<M> &i) { return out << i.val(); } #endif template<class T, class U> istream &operator>>(istream &in, pair<T, U> &p) { return in >> p.first >> p.second; } template<class T, class U> ostream &operator<<(ostream &out, const pair<T, U> &p) { return out << p.first << sp << p.second; } template<class T> istream &operator>>(istream &in, vec<T> &v) { for(auto &e:v) { in >> e; } return in; } namespace myinput { template<class T> set<size_t> check_align_(const vec<T> &v) { set<size_t> s; s.insert(v.size()); return s; } template<class T, class... Args> set<size_t> check_align_(const vec<T> &v, Args&... args) { set<size_t> &&s = check_align_(args...); s.insert(v.size()); return s; } template<class... Args> bool check_align(Args&... args) { return check_align_(args...).size() == size_t(1); } template<class T> void in_(const size_t i, const bool isRoot, vec<T> &v) noexcept { if(i >= v.size()) return; cin >> v[i]; if(isRoot && i + 1 < v.size()) { in_(i + 1, true, v); } } template<class T, class... Args> void in_(const size_t i, const bool isRoot, vec<T> &v, Args&... args) noexcept { if(i >= v.size()) return; cin >> v[i]; in_(i, false, args...); if(isRoot && i + 1 < v.size()) { in_(i + 1, true, v, args...); } } template<class... Args> istream &in(Args&... args) { assert(sizeof...(args) != 0); if(!check_align(args...)) throw invalid_argument("myfunc::in(): Why are the vector sizes not aligned!?!?"); in_(size_t(0), true, args...); return cin; } } using myinput::in; #if defined(__cpp_lib_ranges) && 201911L <= __cpp_lib_ranges void out(const ranges::range auto &v, const string &delim, ostream &out = cout) noexcept { for(auto &&e:v) { out << e << delim; } } #endif [[nodiscard]] constexpr const string &yesno(const bool cond, const string &yes="Yes", const string &no="No") noexcept { if(cond) return yes; return no; } /* #include <random> random_device seed; mt19937_64 mt(seed()); // [mi, ma) [[nodiscard]] uint64_t randint(const uint64_t mi, const uint64_t ma) noexcept { if(mi > ma) return randint(ma, mi); if(mi == ma) return mi; const uint64_t w = ma - mi; uint64_t r = mt(); while(mt.max() - mt.max() % w < r) r = mt(); return r % w + mi; } */ #if defined(__cpp_concepts) && defined(__cpp_lib_concepts) template<class T, class U> requires common_with<T, U> [[nodiscard]] constexpr const common_type_t<T, U> min(const T &a, const U &b) noexcept { return std::min<common_type_t<T, U>>(a, b); } template<class T, class U> requires common_with<T, U> [[nodiscard]] constexpr const common_type_t<T, U> max(const T &a, const U &b) noexcept { return std::max<common_type_t<T, U>>(a, b); } #endif #if defined(__cpp_lib_ranges) && 201911L <= __cpp_lib_ranges template<class T> [[nodiscard]] constexpr T &min(const vec<T> &v) { return *ranges::min_element(v); } template<class T> [[nodiscard]] constexpr T &max(const vec<T> &v) { return *ranges::max_element(v); } #endif [[nodiscard]] constexpr ll powll(ll a, ll b, const ll m = inf) { if(b < 0) [[unlikely]] throw invalid_argument("powll(): exponent less than zero"); if(m < 2) [[unlikely]] throw invalid_argument("powll(): modulo less than two"); a %= m; ll ret = 1; while(b) { if(b % 2) ret *= a, ret %= m; a *= a, a %= m; b /= 2; } return ret; } #ifdef __cpp_concepts template<class T, class U> requires assignable_from<T&, U> && totally_ordered_with<T, U> constexpr bool mini(T &var, const U &val) noexcept { const bool cmp = var > val; if(cmp) var = val; return cmp; } template<class T, class U> requires assignable_from<T&, U> && totally_ordered_with<T, U> constexpr bool maxi(T &var, const U &val) noexcept { const bool cmp = var < val; if(cmp) var = val; return cmp; } #endif class grid { public: #ifdef __cpp_lib_constexpr_string constexpr #endif grid(const ll h, const ll w) : height(h), width(w) { visited = vebo(h * w, false); } [[nodiscard]] constexpr ll operator()(const ll i, const ll j) const noexcept { if(!isvalid(i, j)) return -1; return i * width + j; } [[nodiscard]] constexpr ll operator()(const pair<ll, ll> &p) const noexcept { return (*this)(p.first, p.second); } [[nodiscard]] constexpr bool &seen(const ll i, const ll j) & { if(!isvalid(i, j)) throw out_of_range("grid::seen(): out of range"); return (*this).visited[i * width + j]; } [[nodiscard]] constexpr bool &seen(const pair<ll, ll> &p) & { return this->seen(p.first, p.second); } private: constexpr bool isvalid(const ll i, const ll j) const noexcept { return 0 <= i && 0 <= j && i < height && j < width; } const ll height, width; vebo visited; }; template<class T> constexpr auto erase_single(multiset<T> &mset, const T &v) { const auto it = mset.find(v); if(it == mset.end()) throw invalid_argument("erase_single(): why v not in mset!?!?"); return mset.erase(it); } void solve(); int main(void) { cin.tie(nullptr); ios::sync_with_stdio(false); solve(); return 0; } void solve() { ll n, m; cin >> n >> m; ll ans = 0; times(n) { string s; ll r; cin >> s >> r; bool match = ture; match = match && r >= 1200; match = match && (s[0] == 'x' || s[1] == 'x' || s[2] == 'x' || s[3] == 'x'); ans += int(match); } cout << ans; }