rt
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,t;
char s[200005];
int a[200005];
int top;
int num;
int endd;
int main(){
cin>>n>>t;
cin>>s;
for(int i=0;i<strlen(s);i++){
if(s[i]=='.'){
a[i+1]=-1;
top=i+1;
continue;
}
a[i+1]=s[i]-'0';
}
n=strlen(s);
for(int i=top+1;i<=n;i++){
if(a[i]>=5&&t>=1){
t--;
a[i]=-2;
if(i-1==top){
endd=i-2;
a[i-2]++;
num=666666;
break;
}
endd=i-1;
a[i-1]++;
if(i-1!=top)
num=i-1;
else
num=666666;
break;
}
if(t==0)
break;
}
if(num!=666666){
for(int i=num;i>top;i--){
if(a[i]>=5&&t>=1){
t--;
a[i]=-2;
if(i-1==top){
endd=i-2;
a[i-2]++;
break;
}
endd=i-1;
a[i-1]++;
}
if(t==0)
break;
}
}
for(int i=endd;i>=1;i--){
if(i-1==top){
if(a[i]>=10){
a[i-2]++;
a[i]-=10;
}
i--;
continue;
}
if(a[i]>=10){
a[i-1]++;
a[i]-=10;
}
}
if(a[0]!=0)
cout<<a[0];
for(int i=1;i<=n;i++){
if(i==top){
if(a[i+1]==-2)
break;
cout<<'.';
continue;
}
if(a[i]==-2){
break;
}
cout<<a[i];
}
return 0;
}