2026.1.17 作业- P8082 [COCI 2011/2012 #4] KEKS
题目描述
给定正整数 \(N,K\) 和一个 \(N\) 位数,求在 \(N\) 位数中删除 \(K\) 位后剩下的数的最大值。
输入格式
第一行,两个整数 \(N,K\)。
第二行,一个 \(N\) 位整数。保证没有前导 \(0\)。
输出格式
输出剩下的数的最大值。
输入输出样例 #1
输入 #1
4 2
1924
输出 #1
94
输入输出样例 #2
输入 #2
7 3
1231234
输出 #2
3234
输入输出样例 #3
输入 #3
10 4
4177252841
输出 #3
775841
说明/提示
【数据规模与约定】
- 对于 \(50\%\) 的数据,\(N \le 1000\)。
- 对于 \(100\%\) 的数据,\(1 \le K \lt N \le 5 \times 10^5\)。
#include <iostream>
using namespace std;
int n,k;string s;
int st[500005];
int main() {
cin>>n>>k;cin>>s;
int top=0;st[top]=10;
int i=0,k1=k;
while (k>0) {
while (k>0 && s[i]-'0'>st[top]) top--,k--;
top++,st[top]=s[i]-'0';
i++; if (i==n) break;
}
for (int j=i;j<n;j++) top++,st[top]=s[j]-'0';
for (int i=1;i<=n-k1;i++) cout<<st[i];
cout<<endl;
return 0;
}
浙公网安备 33010602011771号