用单调队列写的找不出错误
查看原帖
用单调队列写的找不出错误
443754
Sender_T楼主2021/7/26 23:02
#include<iostream>
using namespace std;
int n,k;
string x;
int a[255];
int queue[255];
int main(){
	cin >> x >> k;
	n = x.length() - 1;
	for(int i = 0 ; i <= n; i++) a[i] = x[i] - '0';
	int head = 1,tail = 0;
	for(int i = 0 ; i <= n ; i++){
		if(tail < head){
			tail++;
			queue[tail] = a[i];
			continue;
		}
		while(queue[tail] > a[i] && k > 0){
			tail--; //pop
			k--;
		}
		tail++;
		queue[tail] = a[i];
		while(queue[head] == 0) head++;
	}
	while(k > 0 && head < tail) tail--;
	for(int i = 1 ; i <= tail ; i++) cout<<queue[i];
//	for(int i = 1 ; i <= n ; i++) printf("%d",queue[i]);
	return 0;
} 
2021/7/26 23:02
加载中...