fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define ll long long
  6. #define ull unsigned ll
  7. #define ld long double
  8. typedef vector<int> vi;
  9. typedef multiset<int> mi;
  10. typedef multiset<ll> mll;
  11. typedef vector<ll> vll;
  12. typedef vector<bool> vb;
  13. typedef vector<string> vs;
  14. typedef set<ll> sll;
  15. typedef vector<vector<int>> _2vi;
  16. typedef vector<vector<ll>> _2vll;
  17. #define all(v) ((v).begin()), ((v).end())
  18. #define sz(v) ((ll)((v).size()))
  19.  
  20. #define vinp(v, n) \
  21.   for (ull i = 0; i < (n); i++) \
  22.   cin >> (v)[i]
  23. #define printv(v) \
  24.   for (auto i : (v)) \
  25.   cout << i << " "
  26. #define fr0(i, n) for (ull(i) = 0; (i) < (n); (i)++)
  27. #define fr1(i, n) for (ull(i) = 1; (i) < (n); (i)++)
  28. #define fr(i, x, n) for (ull(i) = (x); (i) < (n); (i)++)
  29. #define _CRT_SECURE_NO_WARNING
  30. const ll MOD = 1000000007;
  31.  
  32. void Bustany() {
  33. ios_base::sync_with_stdio(false);
  34. cin.tie(NULL);
  35. cout.tie(NULL);
  36. #ifndef ONLINE_JUDGE
  37. freopen("./in.txt", "r", stdin), freopen("./out.txt", "w", stdout);
  38. #endif
  39. }
  40.  
  41. const ll N = 1e5 + 5;
  42. vector<sll> adj(N);
  43. //_2vll adj(N,vll(N));
  44.  
  45. string a, b;
  46. vll v;
  47.  
  48. bool can(ll mid) {
  49. ll n = a.size();
  50. vb vis(n, 0);
  51. for (ll i = 1; i <= mid; i++) {
  52. vis[v[i]-1]=1;
  53. }
  54. ll j=0;
  55. for(ll i=0;i<a.size();i++){
  56. if(!vis[i] && a[i]==b[j]){
  57. j++;
  58. }
  59. }
  60. return j==b.size();
  61. }
  62.  
  63.  
  64. void solve() {
  65. cin >> a >> b;
  66. ll n = a.size();
  67. v.assign(n+1,{});
  68. fr1(i, n + 1) {
  69. cin >> v[i];
  70. }
  71. ll l = 1, r = n, ans = 0, mid;
  72. //last valid answer
  73. while (l <= r) {
  74. mid = (l + r) / 2;
  75. if (can(mid)) {
  76. ans = mid;
  77. l = mid + 1;
  78. } else {
  79. r = mid - 1;
  80. }
  81. }
  82. cout << ans;
  83. }
  84.  
  85. int main() {
  86. Bustany();
  87. ll t = 1;
  88. // cin >> t;
  89. while (t--) {
  90. solve();
  91. }
  92. }
Success #stdin #stdout 0.01s 7788KB
stdin
Standard input is empty
stdout
Standard output is empty