#include <bits/stdc++.h> using namespace std; using lint = long long; using pi = array<lint, 2>; #define sz(v) ((int)(v).size()) #define all(v) (v).begin(), (v).end() #define cr(v, n) (v).clear(), (v).resize(n); const int mod = 998244353; // 1e9 + 7;//993244853; // I don't remember the credit of modint, but it's not mine. // I don't remember the credit of FFT, but it's probably mine. // Polynomial library is due to adamant: // https://github.com/cp-algorithms/cp-algorithms-aux/blob/master/src/polynomial.cpp // To use polynomial sqrt, need to amend sqrt for modint. struct mint { int val; mint() { val = 0; } mint(const lint &v) { val = (-mod <= v && v < mod) ? v : v % mod; if (val < 0) val += mod; } friend ostream &operator<<(ostream &os, const mint &a) { return os << a.val; } friend bool operator==(const mint &a, const mint &b) { return a.val == b.val; } friend bool operator!=(const mint &a, const mint &b) { return !(a == b); } friend bool operator<(const mint &a, const mint &b) { return a.val < b.val; } mint operator-() const { return mint(-val); } mint &operator+=(const mint &m) { if ((val += m.val) >= mod) val -= mod; return *this; } mint &operator-=(const mint &m) { if ((val -= m.val) < 0) val += mod; return *this; } mint &operator*=(const mint &m) { val = (lint)val * m.val % mod; return *this; } friend mint ipow(mint a, lint p) { mint ans = 1; for (; p; p /= 2, a *= a) if (p & 1) ans *= a; return ans; } mint inv() const { return ipow(*this, mod - 2); } mint &operator/=(const mint &m) { return (*this) *= m.inv(); } friend mint operator+(mint a, const mint &b) { return a += b; } friend mint operator-(mint a, const mint &b) { return a -= b; } friend mint operator*(mint a, const mint &b) { return a *= b; } friend mint operator/(mint a, const mint &b) { return a /= b; } operator int64_t() const { return val; } }; int h(int n) { int a = n % 100, b = n / 100; return (a + b) * (a + b); } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; vector<pi> ans; for (int i = 1; i <= n; i++) { string s; cin >> s; int x; cin >> x; if (s == "NIE") continue; ans.push_back({i, x}); } set<int> dap; for (auto &[k, v] : ans) { if (sz(dap) == 10) break; dap.insert(k); } for (auto &[k, v] : ans) { if (sz(dap) == 20) break; if (v < 2) dap.insert(k); } for (auto &x : dap) cout << x << " "; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #include <bits/stdc++.h> using namespace std; using lint = long long; using pi = array<lint, 2>; #define sz(v) ((int)(v).size()) #define all(v) (v).begin(), (v).end() #define cr(v, n) (v).clear(), (v).resize(n); const int mod = 998244353; // 1e9 + 7;//993244853; // I don't remember the credit of modint, but it's not mine. // I don't remember the credit of FFT, but it's probably mine. // Polynomial library is due to adamant: // https://github.com/cp-algorithms/cp-algorithms-aux/blob/master/src/polynomial.cpp // To use polynomial sqrt, need to amend sqrt for modint. struct mint { int val; mint() { val = 0; } mint(const lint &v) { val = (-mod <= v && v < mod) ? v : v % mod; if (val < 0) val += mod; } friend ostream &operator<<(ostream &os, const mint &a) { return os << a.val; } friend bool operator==(const mint &a, const mint &b) { return a.val == b.val; } friend bool operator!=(const mint &a, const mint &b) { return !(a == b); } friend bool operator<(const mint &a, const mint &b) { return a.val < b.val; } mint operator-() const { return mint(-val); } mint &operator+=(const mint &m) { if ((val += m.val) >= mod) val -= mod; return *this; } mint &operator-=(const mint &m) { if ((val -= m.val) < 0) val += mod; return *this; } mint &operator*=(const mint &m) { val = (lint)val * m.val % mod; return *this; } friend mint ipow(mint a, lint p) { mint ans = 1; for (; p; p /= 2, a *= a) if (p & 1) ans *= a; return ans; } mint inv() const { return ipow(*this, mod - 2); } mint &operator/=(const mint &m) { return (*this) *= m.inv(); } friend mint operator+(mint a, const mint &b) { return a += b; } friend mint operator-(mint a, const mint &b) { return a -= b; } friend mint operator*(mint a, const mint &b) { return a *= b; } friend mint operator/(mint a, const mint &b) { return a /= b; } operator int64_t() const { return val; } }; int h(int n) { int a = n % 100, b = n / 100; return (a + b) * (a + b); } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; vector<pi> ans; for (int i = 1; i <= n; i++) { string s; cin >> s; int x; cin >> x; if (s == "NIE") continue; ans.push_back({i, x}); } set<int> dap; for (auto &[k, v] : ans) { if (sz(dap) == 10) break; dap.insert(k); } for (auto &[k, v] : ans) { if (sz(dap) == 20) break; if (v < 2) dap.insert(k); } for (auto &x : dap) cout << x << " "; } |