20分求助
  • 板块P1124 文件压缩
  • 楼主tkth
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/9/21 20:48
  • 上次更新2023/10/27 10:24:45
查看原帖
20分求助
338144
tkth楼主2022/9/21 20:48
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;
const int MAX= 1e4+1;
ll n;
string str;
struct s{
    char c;
    ll num;
};
s End[MAX],Head[MAX];
ll q;
bool f(){
	for(int i = 1;i <= n;i++){
		if(End[i].c != Head[i].c){
			return 0;
		}
	}
	return 1;
}
bool cmp(s a,s b){
    return a.c < b.c;
}
int main (){
    cin >> n;
    cin >> str;
    cin >> q;
    for(int i = 0;i < n;i++){
        End[i+1].c = str[i];
        End[i+1].num = i+1;
        Head[i+1].c = str[i]-'a';
        Head[i+1].num = i+1;
    }
    sort(Head+1,Head+n+1,cmp);
    for(int i = 1;i <= n;i++){
        Head[i].c+='a';
    }
    if(f()){
    	for(int i = 1;i <= n;i++) cout << Head[i].c;
    	return 0;
	}
    for(int i = 1;i <= n;i++){
        cout << End[q].c;
        if(End[q].c == Head[q].c) q +=1;
		else q = Head[q].num;
    }
    return 0;
}
2022/9/21 20:48
加载中...