fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. string a, b;
  4. vector<int> vec(a.length());
  5.  
  6. bool good(int m)
  7. {
  8. string t = a;
  9. for (int i = 0; i < m; i++)
  10. {
  11. t[vec[i]-1] = '*';
  12. }
  13.  
  14. for (int i = 0; i <= a.length()-b.length(); i++)
  15. {
  16. int indb = 0;
  17. for (int j = i; j < a.length(); j++)
  18. {
  19. if (indb == b.length())
  20. return true;
  21. if (t[j] == b[indb])
  22. indb++;
  23. }
  24. if (indb == b.length())
  25. return true;
  26. }
  27. return false;
  28. }
  29.  
  30. int main()
  31. {
  32. cin >> a >> b;
  33. vec.resize(a.length());
  34. for (int i = 0; i < a.length(); i++)
  35. {
  36. cin >> vec[i];
  37. }
  38.  
  39. int l = 0;
  40. int r = a.length();
  41. int ans;
  42. while (l <= r)
  43. {
  44. int mid = (l + r) / 2;
  45. if (good(mid))
  46. {
  47. ans = mid;
  48. l = mid + 1;
  49. }
  50. else
  51. r = mid - 1;
  52. }
  53. cout << ans;
  54. }
Success #stdin #stdout 0s 4488KB
stdin
ababcba
abb
5 3 4 1 7 6 2
stdout
3