/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 2ms 336.0 KiB
#2 Accepted 6ms 572.0 KiB
#3 Accepted 7ms 772.0 KiB
#4 Accepted 4ms 560.0 KiB
#5 Accepted 4ms 540.0 KiB
#6 Accepted 4ms 772.0 KiB
#7 Accepted 2ms 540.0 KiB
#8 Accepted 4ms 936.0 KiB
#9 Accepted 5ms 1.348 MiB
#10 Accepted 6ms 1.328 MiB
#11 Accepted 2ms 796.0 KiB
#12 Accepted 3ms 748.0 KiB
#13 Accepted 8ms 1.785 MiB
#14 Accepted 3ms 840.0 KiB

Code

#include <iostream>
#include <algorithm>
#include <climits>
#include <string>
#include <cstring>
#include <cmath>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <iomanip>
#include <unordered_map>
#define ll long long
#define fri(a, b) for (int i = a; i < b; i++)
#define frj(a, b) for (int j = a; j < b; j++)
#define frk(a, b) for (int k = a; k < b; k++)
#define frh(a, b) for (int h = a; h < b; h++)
#define rfri(a, b) for (int i = a; i >= b; i--)
#define rfrj(a, b) for (int j = a; j >= b; j--)
#define yes cout << "YES" << "\n";
#define no cout << "NO" << "\n";
#define fast                          \
    ios_base::sync_with_stdio(false); \
    cin.tie(NULL);                    \
    cout.tie(NULL);
const int mod=1e9+7;
const int N = 1e6;    
 
using namespace std;
bool isPowerOfTwo(long long x) {
    return x > 0 && (x & (x - 1)) == 0;
}
int binarySearch(ll a[], int x, int low, int high) {
  
	// Repeat until the pointers low and high meet each other
  while (low <= high) {
    int mid = low + (high - low) / 2;
 
    if (a[mid] == x)
      return mid;
 
    if (a[mid] < x)
      low = mid + 1;
 
    else
      high = mid - 1;
  }
 
  return -1;
}
 
int main() {
    fast int T=1;
    cin >> T;
    while (T--) {
       ll n,k;
       cin >> n >> k;
       string s;
       cin >> s;
       vector <ll> v;
       ll cnt = 0;
       fri(0,n){
        if(s[i] == '1') cnt++;
        if(s[i] == '0' && i>0 && s[i-1] == '1'){
            v.push_back(cnt);
            cnt = 0;
        }
       }
       if(cnt > 0) v.push_back(cnt);
       sort(v.rbegin(),v.rend());
       ll z = min(k+1,(ll)v.size());
       ll sum = 0;
       fri(0,z) sum += v[i];
       cout << sum << "\n";
    }
}

Information

Submit By
Type
Submission
Problem
P1159 Binary String
Contest
Brain Booster #8
Language
C++17 (G++ 13.2.0)
Submit At
2025-02-17 14:55:29
Judged At
2025-02-17 14:56:20
Judged By
Score
100
Total Time
8ms
Peak Memory
1.785 MiB