fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. // your code goes here
  6. int t, n, k, q, l, r;
  7. cin >> t;
  8. while(t--) {
  9. cin >> n >> k >> q;
  10. string s;
  11. cin >> s;
  12. int s1[s.size()], s0[s.size()];
  13. for (int i = 0; i < s.size(); i++) {
  14. s0[i] = 0;
  15. s1[i] = 0;
  16. }
  17. cout << endl;
  18. if (s[0] == '0') {
  19. s0[0] = 1;
  20. s1[0] = 0;
  21. } else {
  22. s0[0] = 0;
  23. s1[0] = 1;
  24. }
  25.  
  26. for (int i = 1; i < s.size(); i++) {
  27. if (s[i] == '0') {
  28. s0[i] = s0[i-1]+1;
  29. s1[i] = s1[i-1];
  30. } else {
  31. s0[i] = s0[i-1];
  32. s1[i] = s1[i-1]+1;
  33. }
  34. }
  35.  
  36. for (int i = 0; i < s.size(); i++) {
  37. cout << s0[i] << " ";
  38. }
  39. cout << endl;
  40. for (int i = 0; i < s.size(); i++) {
  41. cout << s1[i] << " ";
  42. }
  43. cout << endl;
  44.  
  45. while(q--) {
  46. cin >> l >> r;
  47. int c = 0;
  48. int ans = 0;
  49. for (int i = l; i <= r; i++) {
  50. if ((s0[i] - s0[l] < k) && (s1[i] - s1[l] < k)) {
  51. c = c + 1;
  52. }
  53. cout << c << endl;
  54. ans = ans + ((c*(c+1))/2);
  55. }
  56. cout << "ans = " << ans << endl;
  57. }
  58.  
  59. }
  60. return 0;
  61. }
Success #stdin #stdout 0s 3280KB
stdin
1
8 2 3
01110000
1 4
2 4
5 8
stdout
1 1 1 1 2 3 4 5 
0 1 2 3 3 3 3 3 
1
2
2
2
ans = 10
1
2
3
ans = 10
1
2
2
2
ans = 10