結果
問題 | No.2614 Delete ABC |
ユーザー |
|
提出日時 | 2024-01-26 21:37:31 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 5,440 bytes |
コンパイル時間 | 2,078 ms |
コンパイル使用メモリ | 179,152 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-28 07:52:01 |
合計ジャッジ時間 | 2,593 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 2 |
ソースコード
/* 💕💕💕💕💕💗💗💗💗💗/)/)( . .)( づ💗💗💗💗 💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗*/#include <algorithm>#include <array>#include <bitset>#include <cassert>#include <chrono>#include <cmath>#include <complex>#include <cstdint>#include <cstring>#include <ctime>#include <deque>#include <iomanip>#include <iostream>#include <map>#include <numeric>#include <queue>#include <random>#include <ranges>#include <set>#include <sstream>#include <stack>#include <unordered_map>#include <unordered_set>#include <vector>template <typename T1, typename T2>std::ostream &operator<<(std::ostream &os, const std::pair<T1, T2> &p) {os << p.first << " " << p.second;return os;}template <typename T1, typename T2>std::istream &operator>>(std::istream &is, std::pair<T1, T2> &p) {is >> p.first >> p.second;return is;}template <typename T>std::ostream &operator<<(std::ostream &os, const std::vector<T> &v) {for (int i = 0; i < (int)v.size(); i++) {os << v[i] << (i + 1 != (int)v.size() ? " " : "");}return os;}template <typename T>std::istream &operator>>(std::istream &is, std::vector<T> &v) {for (T &in : v) is >> in;return is;}template <typename T>struct FenwickTree {std::vector<T> bit;int n;FenwickTree(int _n) : n(_n), bit(_n) {}T sum(int r) {T ret = 0;for (; r >= 0; r = (r & (r + 1)) - 1) ret += bit[r];return ret;}T sum(int l, int r) {assert(l <= r);return sum(r) - sum(l - 1);} // [l, r]void add(int idx, T delta) {for (; idx < n; idx = idx | (idx + 1)) bit[idx] += delta;}void set(int idx, T val) { add(idx, val - sum(idx, idx)); }};std::pair<std::vector<int>, std::vector<int>> get_prime_factor_with_kinds(int n) {std::vector<int> prime_factors;std::vector<int> cnt; // number of i_th factorfor (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) {prime_factors.push_back(i);cnt.push_back(0);while (n % i == 0) n /= i, cnt[(int)prime_factors.size() - 1]++;}}if (n > 1) prime_factors.push_back(n), cnt.push_back(1);assert(prime_factors.size() == cnt.size());return {prime_factors, cnt};}namespace internal {template <class E>struct csr {std::vector<int> start;std::vector<E> elist;explicit csr(int n, const std::vector<std::pair<int, E>> &edges): start(n + 1), elist(edges.size()) {for (auto e : edges) {start[e.first + 1]++;}for (int i = 1; i <= n; i++) {start[i] += start[i - 1];}auto counter = start;for (auto e : edges) {elist[counter[e.first]++] = e.second;}}};} // namespace internalstruct scc_graph {public:explicit scc_graph(int n) : _n(n) {}int num_vertices() { return _n; }void add_edge(int from, int to) { edges.push_back({from, {to}}); }// @return pair of (# of scc, scc id)std::pair<int, std::vector<int>> scc_ids() {auto g = internal::csr<edge>(_n, edges);int now_ord = 0, group_num = 0;std::vector<int> visited, low(_n), ord(_n, -1), ids(_n);visited.reserve(_n);auto dfs = [&](auto self, int v) -> void {low[v] = ord[v] = now_ord++;visited.push_back(v);for (int i = g.start[v]; i < g.start[v + 1]; i++) {auto to = g.elist[i].to;if (ord[to] == -1) {self(self, to);low[v] = std::min(low[v], low[to]);} else {low[v] = std::min(low[v], ord[to]);}}if (low[v] == ord[v]) {while (true) {int u = visited.back();visited.pop_back();ord[u] = _n;ids[u] = group_num;if (u == v) break;}group_num++;}};for (int i = 0; i < _n; i++) {if (ord[i] == -1) dfs(dfs, i);}for (auto &x : ids) {x = group_num - 1 - x;}return {group_num, ids};}std::vector<std::vector<int>> scc() {auto ids = scc_ids();int group_num = ids.first;std::vector<int> counts(group_num);for (auto x : ids.second) counts[x]++;std::vector<std::vector<int>> groups(ids.first);for (int i = 0; i < group_num; i++) {groups[i].reserve(counts[i]);}for (int i = 0; i < _n; i++) {groups[ids.second[i]].push_back(i);}return groups;}private:int _n;struct edge {int to;};std::vector<std::pair<int, edge>> edges;};template <typename T>struct DSU {std::vector<T> f, siz;DSU(int n) : f(n), siz(n, 1) { std::iota(f.begin(), f.end(), 0); }T leader(T x) {while (x != f[x]) x = f[x] = f[f[x]];return x;}bool same(T x, T y) { return leader(x) == leader(y); }bool merge(T x, T y) {x = leader(x);y = leader(y);if (x == y) return false;siz[x] += siz[y];f[y] = x;return true;}T size(int x) { return siz[leader(x)]; }};void solve() {int t;std::cin >> t;while (t--) {int n;std::cin >> n;std::string s;for (int i = 0; i < n; i++) {s += "ABC";}std::swap(s[2], s[3]);std::cout << s << "\n";}}int main() {int t = 1;std::ios::sync_with_stdio(false);std::cin.tie(nullptr);// std::cin >> t;while (t--) solve();return 0;}