Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <string>
- #include <set>
- #include <map>
- #include <list>
- #include <time.h>
- #include <math.h>
- #include <random>
- #include <deque>
- #include <queue>
- #include <cassert>
- #include <unordered_map>
- #include <unordered_set>
- #include <iomanip>
- #include <bitset>
- #include <sstream>
- #include <chrono>
- #include <cstring>
- using namespace std;
- #define X first
- #define Y second
- #define pb push_back
- #define mp make_pair
- #define sz(x) ((int)(x).size())
- #define all(x) (x).begin(),(x).end()
- #define PI 3.14159265358979323846
- typedef long long ll;
- const int maxn = 5e5 + 228;
- int n;
- int main() {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- cout.tie(0);
- int tt;
- cin >> tt;
- while(tt--){
- int n, m;
- cin >> n >> m;
- vector<int> ans(26);
- vector<vector<int>> dp(n, vector<int>(26));
- string s;
- cin >> s;
- vector<int> p(m);
- for(int i = 0; i < m; ++i){
- cin >> p[i];
- p[i]--;
- }
- p.push_back(n - 1);
- sort(p.begin(), p.end());
- dp[0][s[0] - 'a'] = 1;
- for(int i = 1; i < sz(s); ++i){
- for(int j = 0; j < 26; ++j){
- dp[i][j] = dp[i - 1][j];
- }
- dp[i][s[i] - 'a']++;
- }
- for(int t : p){
- for(int j = 0; j < 26; ++j){
- ans[j] += dp[t][j];
- }
- }
- for(int i = 0; i < 26; ++i){
- cout << ans[i] << " ";
- }
- cout << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement