Advertisement
a53

A-FlippedCards

a53
Aug 8th, 2021
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. /// sol OF
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. ifstream fin("flipc.in");
  5. ofstream fout("flipc.out");
  6. void solve1() {
  7. long long n, K;
  8. fin >> n >> K;
  9. long long v[n + 5], k(0);
  10. bool vl[n + 5];
  11. char a('X');
  12. for (long long i = 1; i <= n; i++) {
  13. char c;
  14. fin >> c;
  15. if (c != a)v[++k] = 1, vl[k] = (c == '1');
  16. else v[k]++;
  17. a = c;
  18. }
  19. long long s[k + 5];
  20. s[0] = 0;
  21. for (long long i = 1; i <= k; i++)s[i] = s[i - 1] + v[i];
  22. long long mx(0);
  23. for (long long i = 1; i + K - 1 <= k; i++) {
  24. if (vl[i] && i + K <= k)mx = max(mx, s[i + K] - s[i - 1]);
  25. else mx = max(mx, s[i + K - 1] - s[i - 1]);
  26. }
  27. fout << mx;
  28. }
  29. void solve2() {
  30. long long n, K;
  31. fin >> n >> K;
  32. long long v[n + 5], k(0);
  33. bool vl[n + 5];
  34. char a('X');
  35. for (long long i = 1; i <= n; i++) {
  36. char c;
  37. fin >> c;
  38. if (c != a)v[++k] = 1, vl[k] = (c == '1');
  39. else v[k]++;
  40. a = c;
  41. }
  42. long long nr(0);
  43. for (long long i = 1; i + K - 1 <= k; i++) {
  44. if (vl[i]) {
  45. if (i + K <= k) {
  46. nr += v[i] * v[i + K];
  47. }
  48. }
  49. else {
  50. if (K == 1)nr += (v[i] * (v[i] + 1)) / 2;
  51. else nr += v[i] * v[i + K - 1];
  52. }
  53. }
  54. fout << nr;
  55. }
  56. int main() {
  57. long long c;
  58. fin >> c;
  59. if (c == 1)solve1();
  60. else solve2();
  61. return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement