【HDOJ】3183 A Magic Lamp

时间:2023-03-09 18:39:41
【HDOJ】3183 A Magic Lamp

RMQ。

 /* 3183 */
#include <cstdio>
#include <cstring>
#include <cstdlib> #define MAXN 1005 char s[MAXN], ans[MAXN];
int dp[MAXN][MAXN];
int n,len,m; int min(int x, int y) {
return s[x]<=s[y] ? x:y;
} void RMQ_init() {
int i, j, k; for (i=; i<=len; ++i)
dp[i][] = i;
for (j=; (<<j)<=len; ++j)
for (i=; i+(<<j)-<=len; ++i)
dp[i][j] = min(dp[i][j-], dp[i+(<<(j-))][j-]);
} int RMQ(int l, int r) {
int k = ; while ((<<(k+)) <= r-l+)
++k;
return min(dp[l][k], dp[r-(<<k)+][k]);
} int main() {
int i, j, k;
int l; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif while (scanf("%s %d", s+, &m)!=EOF) {
len = strlen(s+);
RMQ_init();
m = len - m;
l = k = ;
while (m--) {
k = RMQ(k, len-m);
ans[l++] = s[k++];
}
for (i=; i<l; ++i)
if (ans[i] != '')
break;
ans[l] = '\0';
if (i == l)
puts("");
else
puts(ans+i);
} return ;
}