Участник:Krivosheev.ah/REPROAD

Материал из DISCOPAL
Перейти к: навигация, поиск

C++ (gcc 8.3)

https://www.spoj.com/problems/REPROAD/

#include <iostream>
#include <vector>
#include <cstdlib>
#include <set>
 
using namespace std;
 
int main() {
	int t;
	cin >> t;
	while( t-- ) {
	    int n, k;
	    cin >> n >> k;
	    vector<int> nums(n);
	    int i;
	    for(i = 0; i < n; i++){
	        cin >> nums[i];
	    }
	    int front = 0, back = 0;
	    int max_len = 0;
	    int zeros = 0; 
 
	    while(back < n) {
	        if( nums[back] == 0 )
	            zeros++;
	        if( zeros <= k ) {
	            max_len = max(back-front+1, max_len);
	        }
	        else {
	            while( zeros > k && front < back ) {
	                if(nums[front] == 0)
	                    zeros--;
	                front++;
	            }
	        }
	        back++;
	    }
	    cout << max_len << endl;
	}
	return 0;
}