Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int f(int *a, int n, int k) {
- int l = 0, r = -1;
- int curr = 1;
- for (int i = 0; i < n; ++i) {
- if (i == n - 1) {
- if (curr > k) {
- for (int j = 0; j < curr; ++j)
- a[l++] = a[i];
- r = i;
- curr = 1;
- continue;
- }
- ans += i - r;
- r = i;
- continue;
- }
- if (a[i] == a[i + 1]) {
- ++curr;
- continue;
- }
- if (curr > k) {
- for (int j = 0; j < curr; ++j)
- a[l++] = a[i - 1];
- r = i - 1;
- curr = 1;
- continue;
- }
- ans += i - r;
- r = i - 1;
- curr = 1;
- }
- //printf("%d %d\n", l, r);
- return (r - l) + 1;
- }
- void print_arr(int *a, int n) {
- for (int i = 0; i < n; ++i)
- printf("%d ", a[i]);
- printf("\n");
- }
- int main(void) {
- int n = 15;
- int k = 2;
- int a[] = {1,1,2,1,2,2,3,4,5,6,7,11,11,11,12};
- int ans = f(a, n, k);
- print_arr(a, n - ans);
- printf("%d\n", ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement