#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <list>
using namespace std;
list<int> tm;
list<int>::iterator it,NEXT;
int main()
{
int i,t,n,j;
while(scanf("%d%d",&t,&n)!=EOF)
{
tm.clear(); //清空
getchar();
if (!t&&!n) break;
char c;
for (i=1;i<=t;i++)
{
scanf("%c",&c);
tm.push_back(c-48); //构造
}
getchar(); //吃掉回车
NEXT=it=tm.begin();
NEXT++;
while(n>0&&NEXT!=tm.end() )
{
while (*it<*NEXT&&NEXT!=tm.end()&&n>0)
{
tm.erase(it);
it=NEXT;
if (it!=tm.begin()) //此情况下it退后一步,
{
it--;
}
else //此情况下it无法退后,直接next++
{
NEXT++;
}
n--; //n的次数递减
}
if (NEXT!=tm.end())
{
it++;
NEXT++;
}
if (n<=0) break;
}
if (n>0) //此时若n仍>0,剩下的链表必定是降序数列,直接从最后删除
{
it=tm.end();
it--;
while(it!=tm.begin()&&n>0)
{
tm.erase(it);
n--;
it=tm.end();
it--;
}
}
for (it=tm.begin();it!=tm.end();it++)
{
cout<<*it;
}
cout<<endl;
}
return 0;
}
J - Erasing and Winning UVA 11491
最新推荐文章于 2019-11-14 23:06:01 发布