結果
問題 | No.1444 !Andd |
ユーザー | iaNTU |
提出日時 | 2021-03-21 18:48:20 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 68 ms / 2,000 ms |
コード長 | 10,611 bytes |
コンパイル時間 | 2,318 ms |
コンパイル使用メモリ | 203,048 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-22 13:14:36 |
合計ジャッジ時間 | 4,252 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 17 ms
5,248 KB |
testcase_04 | AC | 12 ms
5,248 KB |
testcase_05 | AC | 3 ms
5,248 KB |
testcase_06 | AC | 13 ms
5,248 KB |
testcase_07 | AC | 11 ms
5,248 KB |
testcase_08 | AC | 28 ms
5,248 KB |
testcase_09 | AC | 18 ms
5,248 KB |
testcase_10 | AC | 3 ms
5,248 KB |
testcase_11 | AC | 3 ms
5,248 KB |
testcase_12 | AC | 34 ms
5,248 KB |
testcase_13 | AC | 47 ms
5,248 KB |
testcase_14 | AC | 4 ms
5,248 KB |
testcase_15 | AC | 45 ms
5,248 KB |
testcase_16 | AC | 68 ms
5,248 KB |
testcase_17 | AC | 10 ms
5,248 KB |
testcase_18 | AC | 68 ms
5,248 KB |
testcase_19 | AC | 68 ms
5,248 KB |
testcase_20 | AC | 68 ms
5,248 KB |
testcase_21 | AC | 68 ms
5,248 KB |
testcase_22 | AC | 68 ms
5,248 KB |
ソースコード
// Exported by Exporter.exe // Included from Review.cpp #include <bits/stdc++.h> using namespace std; #define PB push_back #define F first #define S second #define MP make_pair #define MTP make_tuple #define R Read #define RD Read_Digit #define RP Read_P #define RL Read_Loop #define RLD Read_Loop_Digit #define RLP Read_Loop_P #ifdef ONLINE_JUDGE #define Debug(x) ; #define Debug_Array(n,x) ; #else #define Debug(x) _Debug((#x), (x)) #define Debug_Array(n,x) _Debug_Array((n), (#x), (x)) #endif typedef long long int ll; typedef unsigned long long int ull; constexpr int kN = int(2E4 + 10); constexpr int kC = 1 << 10; // constexpr int kMod = 998244353; // constexpr int kMod = int(1E9 + 7); // constexpr int kInf = 0x3f3f3f3f; // constexpr ll kInf = 0x3f3f3f3f3f3f3f3f; // constexpr double kPi = acos(-1); // constexpr double kEps = 1E-9; // Included from C:\Users\ianli\Desktop\CP\template\Various\Fast_IO\Fast_IO.cpp // --- Get --- static inline char Get_Raw_Char() { static char buf[1 << 16], *p = buf, *end = buf; if (p == end) { if ((end = buf + fread(buf, 1, 1 << 16, stdin)) == buf) return '\0'; p = buf; } return *p++; } // --- Read --- template <typename T> static inline void Read_P(T &n) { static_assert(is_integral<T>::value); char c = Get_Raw_Char(); while (!isdigit(c)) c = Get_Raw_Char(); n = int(c - '0'); while (isdigit(c = Get_Raw_Char())) n = n * 10 + int(c - '0'); return ; } template <typename T> static inline void Read(T &n) { static_assert(is_integral<T>::value); char c = Get_Raw_Char(); bool neg = false; while (!isdigit(c)) { if (c == '-') neg = true; c = Get_Raw_Char(); } n = int(c - '0'); while (isdigit(c = Get_Raw_Char())) n = n * 10 + int(c - '0'); if (neg) n = -n; return ; } template <typename T> static inline void Read_Digit(T &n) { static_assert(is_integral<T>::value); char c = Get_Raw_Char(); while (!isdigit(c)) c = Get_Raw_Char(); n = int(c - '0'); return ; } // --- Read multiple --- template <typename T, typename... Targs> static inline void Read(T &n, Targs&... Fargs) {Read(n); return Read(Fargs...);} template <typename T, typename... Targs> static inline void Read_Digit(T &n, Targs&... Fargs) {Read_Digit(n); return Read_Digit(Fargs...);} template <typename T, typename... Targs> static inline void Read_P(T &n, Targs&... Fargs) {Read_P(n); return Read_P(Fargs...);} // --- Read Loop --- template <typename T> static inline void Read_Loop_i(int i, T *a) {return Read(a[i]);} template <typename T, typename... Targs> static inline void Read_Loop_i(int i, T *a, Targs*... Fargs) {Read(a[i]); return Read_Loop_i(i, Fargs...);} template <typename... Targs> static inline void Read_Loop(int n, Targs*... Fargs) {for (int i = 1; i <= n; i++) Read_Loop_i(i, Fargs...);} template <typename T> static inline void Read_Loop_Digit_i(int i, T *a) {return Read_Digit(a[i]);} template <typename T, typename... Targs> static inline void Read_Loop_Digit_i(int i, T *a, Targs*... Fargs) {Read_Digit(a[i]); return Read_Loop_Digit_i(i, Fargs...);} template <typename... Targs> static inline void Read_Loop_Digit(int n, Targs*... Fargs) {for (int i = 1; i <= n; i++) Read_Loop_Digit_i(i, Fargs...);} template <typename T> static inline void Read_Loop_P_i(int i, T *a) {return Read_P(a[i]);} template <typename T, typename... Targs> static inline void Read_Loop_P_i(int i, T *a, Targs*... Fargs) {Read_P(a[i]); return Read_Loop_P_i(i, Fargs...);} template <typename... Targs> static inline void Read_Loop_P(int n, Targs*... Fargs) {for (int i = 1; i <= n; i++) Read_Loop_P_i(i, Fargs...);} // --- Float --- template <int mul, typename T> static inline void Read(T &n) { char c = Get_Raw_Char(); bool neg = false; while (!isdigit(c)) { if (c == '-') neg = true; c = Get_Raw_Char(); } n = int(c - '0'); while (isdigit(c = Get_Raw_Char())) n = n * 10 + int(c - '0'); int cnt = 0; if (c == '.') { while (isdigit(c = Get_Raw_Char())) { n = n * 10 + int(c - '0'); cnt++; } } while (cnt < mul) { n = n * 10; cnt++; } if (neg) n = -n; return ; } template <int mul, typename T> static inline void Read_P(T &n) { char c = Get_Raw_Char(); while (!isdigit(c)) c = Get_Raw_Char(); n = int(c - '0'); while (isdigit(c = Get_Raw_Char())) n = n * 10 + int(c - '0'); int cnt = 0; if (c == '.') { while (isdigit(c = Get_Raw_Char())) { n = n * 10 + int(c - '0'); cnt++; } } while (cnt < mul) { n = n * 10; cnt++; } return ; } template <int mul, typename T, typename... Targs> static inline void Read(T &n, Targs&... Fargs) {Read<mul>(n); return Read<mul>(Fargs...);} template <int mul, typename T, typename... Targs> static inline void Read_P(T &n, Targs&... Fargs) {Read_P<mul>(n); return Read_P<mul>(Fargs...);} inline void IOS() {ios::sync_with_stdio(false); cin.tie(0);} // --- freopen --- inline void Freopen(const char *in, const char *out) { freopen(in, "r", stdin); freopen(out, "w", stdout);} // --- Output --- template <typename T> void Print(T x) { if (x < 0) { printf("-"); x = -x; } if (x == 0) printf("0"); else { static int val[100]; int idx = -1; while (x) { val[++idx] = x % 10; x /= 10; } while (idx >= 0) printf("%d", val[idx--]); } } // End of C:\Users\ianli\Desktop\CP\template\Various\Fast_IO\Fast_IO.cpp // Included from C:\Users\ianli\Desktop\CP\template\Various\Useful_Functions\Useful_Functions.cpp template <typename T> inline void sort(vector<T> &v) {return sort(v.begin(), v.end());} template <typename T> inline void sort(int n, T *a) {return sort(a + 1, a + n + 1);} template <typename T> inline void sort_r(vector<T> &v) {return sort(v.begin(), v.end(), greater<T>());} template <typename T> inline void sort_r(int n, T *a) {return sort(a + 1, a + n + 1, greater<T>());} template <typename T> inline void Merge(vector<T> &a, vector<T> &b, vector<T> &c) { if (c.size() < a.size() + b.size()) c.resize(a.size() + b.size()); merge(a.begin(), a.end(), b.begin(), b.end(), c.begin()); return ; } template <typename T> inline void Discrete(vector<T> &v) {sort(v); v.resize(unique(v.begin(), v.end()) - v.begin());} template <typename T> using PQ = priority_queue<T>; template <typename T> using PQ_R = priority_queue<T, vector<T>, greater<T>>; template <typename T> inline T ABS(T n) {return n >= 0 ? n : -n;} template <typename T> inline T gcd(T a, T b) {return b ? gcd(b, a % b) : a;} template <typename T> inline T lcm(T a, T b) {return a * b / gcd(a, b);} template <typename T> inline void chmin(T &a, T b) { a = min(a, b); return ; } template <typename T> inline void chmax(T &a, T b) { a = max(a, b); return ; } template <typename T> inline int Digit_Sum(T a) { int ans = 0; while (a) { ans += a % 10; a /= 10; } return ans; } // End of C:\Users\ianli\Desktop\CP\template\Various\Useful_Functions\Useful_Functions.cpp // Included from C:\Users\ianli\Desktop\CP\template\Various\Debug\Debug.cpp void _print(int x) {printf("%d", x);} void _print(long long int x) {printf("%lld", x);} void _print(double x) {printf("%lf", x);} template <typename T1, typename T2> void _print(pair<T1, T2> x) {printf("("); _print(x.first); printf(", "); _print(x.second); printf(")");} template <typename T> void _Debug(const char *s, T x) {printf("%s = ", s); _print(x); printf("\n");} template <typename T> void _Debug(const char *s, vector<T> v) { printf("%s :", s); if (v.empty()) printf(" empty"); else for (T i : v) printf(" "), _print(i); printf("\n"); } template <typename T1, typename T2, typename T3> void _Debug(const char *s, priority_queue<T1, T2, T3> pq) { printf("%s :", s); if (pq.empty()) printf(" empty"); else { while (!pq.empty()) { printf(" "); _print(pq.top()); pq.pop(); } } printf("\n"); } template <typename T> void _Debug(const char *s, queue<T> q) { printf("%s :", s); if (q.empty()) printf(" empty"); else { while (!q.empty()) { printf(" "); _print(q.front()); q.pop(); } } printf("\n"); } template <typename T> void _Debug(const char *s, stack<T> st) { printf("%s :", s); if (st.empty()) printf(" empty"); else { while (!st.empty()) { printf(" "); _print(st.top()); st.pop(); } } printf("\n"); } template <typename T> void _Debug(const char *s, deque<T> dq) { printf("%s :", s); if (dq.empty()) printf(" empty"); else { while (!dq.empty()) { printf(" "); _print(dq.front()); dq.pop_front(); } } printf("\n"); } template <typename T> void _Debugln(const char *s, vector<T> v) { printf("%s :", s); if (v.empty()) printf(" empty\n"); else { for (T i : v) printf("\n"), _print(i); printf("\n"); } } template <typename T1, typename T2, typename T3> void _Debugln(const char *s, priority_queue<T1, T2, T3> pq) { printf("%s :", s); if (pq.empty()) printf(" empty"); else { while (!pq.empty()) { printf("\n"); _print(pq.top()); pq.pop(); } } printf("\n"); } template <typename T> void _Debugln(const char *s, queue<T> q) { printf("%s :", s); if (q.empty()) printf(" empty"); else { while (!q.empty()) { printf("\n"); _print(q.front()); q.pop(); } } printf("\n"); } template <typename T> void _Debugln(const char *s, stack<T> st) { printf("%s :", s); if (st.empty()) printf(" empty"); else { while (!st.empty()) { printf("\n"); _print(st.top()); st.pop(); } } printf("\n"); } template <typename T> void _Debugln(const char *s, deque<T> dq) { printf("%s :", s); if (dq.empty()) printf(" empty"); else { while (!dq.empty()) { printf("\n"); _print(dq.front()); dq.pop_front(); } } printf("\n"); } template <typename T> void _Debug_Array(int n, const char *s, const T *x) {printf("%s :", s); for (int i = 1; i <= n; i++) printf(" "), _print(x[i]); printf("\n");} template <typename T> void _Debugln_Array(int n, const char *s, const T *x) {printf("%s :\n", s); for (int i = 1; i <= n; i++) _print(x[i]), printf("\n");} // End of C:\Users\ianli\Desktop\CP\template\Various\Debug\Debug.cpp int a[kN]; bitset<kC> Mul, And, lst; int main() { int n; RP(n); RLP(n, a); lst[1] = true; bool have_zero = false; bool have_one = true; int ans = 1; for (int i = 1; i <= n; i++) { if (a[i] == 0) { while (i++ <= n) printf("1\n"); break; } And.reset(); Mul.reset(); for (int j = 0; j < kC; j++) if (lst[j]) { Mul[j * a[i] % kC] = true; And[j & a[i]] = true; } for (int j = 0; j <= a[i]; j++) if (And[j]) ans++; if (have_zero && And[0]) ans--; if (have_one && And[a[i]]) ans--; if (And[0]) have_zero = true; have_one = And[1]; lst = Mul | And; printf("%d\n", ans); } } // End of Review.cpp