首页 > 代码库 > cf/628/C

cf/628/C

贪心水题

每个字符都往能够让dist最大的方向变.

#include <cstdio>
char a[100010];
int main(){
    int n,k;
    scanf("%d %d",&n,&k);
    scanf("%s",a);
    int sum=k;
    for(int i=0;i<n;i++){
        if(a[i]-a>z-a[i]){
            if(sum<=a[i]-a){
                a[i]=a[i]-sum;
                sum=0;
                break;
            }else{
                sum-=(a[i]-a);
                a[i]=a;
            }
        }else{
            if(sum<=z-a[i]){
                a[i]=a[i]+sum;
                sum=0;
                break;
            }else{
                sum-=(z-a[i]);
                a[i]=z;
            }
        }
    }
    if(sum){
        printf("-1");
    }else{
        printf("%s",a);
    }
    scanf("%d %d",&n,&k);
    return 0;
}

 

cf/628/C