Submission #872732

#TimeUsernameProblemLanguageResultExecution timeMemory
872732binh192004Mobitel (COCI14_mobitel)C++17
50 / 50
2 ms7508 KiB
#include <bits/stdc++.h> #include <iostream> #include <stack> #include <vector> #include <set> #include <queue> #include <string> #include <algorithm> #include <unordered_map> #include <unordered_set> #include <map> using namespace std; typedef long double ld; mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count()); //#define int long long #define double long double #define all(x) (x).begin(), (x).end() #define pii pair<int, int> #define lowbit(x) x & (-x); #define inf 1e18 #define _inf -1e18 #define pyes cout << "YES" << endl #define pno cout << "NO" << endl #define inv(a) for (int& x: a) cin >> x; #define llv(a) for (ll& x: a) cin >> x; #define pri(a) for (int& x: a) cout << x << '\n' int const MOD = 998244353; int const lg = 20; int const block = 500; // int block; int const MAX = 3e5 + 1, N = 4000; int n, m, q, k; struct SEG { int n; vector<int> tree, a, lazy; #define lc id*2 #define rc id*2+1 #define mid (l+r)/2 SEG() {} SEG(int n) : n(n) { tree = lazy = vector<int>(4 * n + 1); } void push(int id, int l, int r) { if (!lazy[id]) return; tree[id] += lazy[id]; if (l != r) { lazy[lc] += lazy[id]; lazy[rc] += lazy[id]; } lazy[id] = 0; } void update(int id, int l, int r, int u, int v, int val) { push(id, l, r); if (u > r || l > v) return; if (u <= l && r <= v) { lazy[id] += val; push(id, l, r); return; } update(lc, l, mid, u, v, val); update(rc, mid + 1, r, u, v, val); tree[id] = max(tree[lc], tree[rc]); } int get(int id, int l, int r, int u, int v){ push(id, l, r); if (l > v || u > r) return 0; if (u <= l && r <= v) return tree[id]; return max(get(lc, l, mid, u, v), get(rc, mid + 1, r, u, v)); } }; vector<tuple<int, int, int, int>> save[MAX]; struct fenwick{ int n; vector<int> bit; fenwick() = default; fenwick(int n): n(n){ bit.resize(n + 1); } void add(int id, int val){ while (id){ bit[id] += val; id -= lowbit(id); } } int get(int id){ int ans = 0; while (id <= n){ ans += bit[id]; id += lowbit(id); } return ans; } }; void bexuyen67() { int cnt = 0; vector<pii> pos(26); int key = 2; for (int i = 0; i < 26; i++){ cnt++; pos[i] = {key, cnt}; if (key != 7 && key != 9){ if (cnt == 3){ cnt = 0, key++; } } else{ if (cnt == 4){ cnt = 0, key++; } } } vector<int> change(10); for (int i = 1, x; i <= 9; i++){ cin >> x; change[x] = i; } string s; cin >> s; int pre = 0; for (char x: s){ if (pos[x - 'a'].first == pre) cout << '#'; for (int i = 0; i < pos[x - 'a'].second; i++) cout << change[pos[x - 'a'].first]; pre = pos[x - 'a'].first; } } signed main() { #ifdef binhball freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif cin.tie(0)->sync_with_stdio(0); cout << fixed << setprecision(15); int t = 1; // cin >> t; while (t--) bexuyen67(); }
#Verdict Execution timeMemoryGrader output
Fetching results...