Submission #637830


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
int n,t;
int sa[300010],rnk[300010],tmp[300010];
bool compare_sa(int i,int j){
	if(rnk[i]!=rnk[j])	return rnk[i]<rnk[j];
	int ri=i+t<=n?rnk[i+t]:-1;
	int rj=j+t<=n?rnk[j+t]:-1;
	return ri<rj;
}
int main(){
	string s;	cin>>s;
	int k;	cin>>k;
	n=s.size();
	int acnt=0;
	for(int i=0;i<n;i++){
		if(s[i]=='a')	acnt++;
	}
	if(acnt+k>=n){
		int left=n-k;
		for(int i=0;i<left;i++)	cout<<"a";
		cout<<endl;
		return 0;
	}
	for(int i=0;i<=n;i++){
		sa[i]=i;
		rnk[i]=i<n?(s[i]-'a'):-1;
	}
	for(t=1;t<=n;t*=2){
		sort(sa,sa+n+1,compare_sa);
		tmp[sa[0]]=0;
		for(int i=1;i<=n;i++){
			tmp[sa[i]]=tmp[sa[i-1]]+(compare_sa(sa[i-1],sa[i])?1:0);
		}
		for(int i=0;i<=n;i++)	rnk[i]=tmp[i];
	}
	int left=0,right=0,cnt=0;
	acnt=0;
	for(int i=0;i<n;i++){
		if(s[i]=='a'){
			left=right=i+1;
			acnt++;
		}
		else	cnt++;
		if(k<=cnt){
			right=i+1;
			break;
		}
	}
	int sml=left;
	for(int i=left;i<=right;i++){
		if(rnk[sml]>rnk[i])	sml=i;
	}
	for(int i=0;i<acnt+k;i++)	cout<<"a";
	cout<<s.substr(sml)<<endl;
	return 0;
}

Submission Info

Submission Time
Task C - アメージングな文字列は、きみが作る!
User fiord
Language C++ (GCC 4.9.2)
Score 100
Code Size 1108 Byte
Status AC
Exec Time 762 ms
Memory 5052 KB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3 All
Score / Max Score 0 / 0 10 / 10 10 / 10 20 / 20 60 / 60
Status
AC × 3
AC × 13
AC × 28
AC × 43
AC × 62
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt, 00_example_03.txt
Subtask1 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 10_rand_01.txt, 10_rand_02.txt, 10_rand_03.txt, 10_rand_04.txt, 10_rand_05.txt, 20_hand_01.txt, 20_hand_02.txt, 20_hand_03.txt, 20_hand_04.txt, 20_hand_05.txt
Subtask2 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 10_rand_01.txt, 10_rand_02.txt, 10_rand_03.txt, 10_rand_04.txt, 10_rand_05.txt, 20_hand_01.txt, 20_hand_02.txt, 20_hand_03.txt, 20_hand_04.txt, 20_hand_05.txt, 40_rand_01.txt, 40_rand_02.txt, 40_rand_03.txt, 40_rand_04.txt, 40_rand_05.txt, 40_rand_06.txt, 40_rand_07.txt, 40_rand_08.txt, 40_rand_09.txt, 40_rand_10.txt, 50_hand_01.txt, 50_hand_02.txt, 50_hand_03.txt, 50_hand_04.txt, 50_hand_05.txt
Subtask3 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 10_rand_01.txt, 10_rand_02.txt, 10_rand_03.txt, 10_rand_04.txt, 10_rand_05.txt, 20_hand_01.txt, 20_hand_02.txt, 20_hand_03.txt, 20_hand_04.txt, 20_hand_05.txt, 40_rand_01.txt, 40_rand_02.txt, 40_rand_03.txt, 40_rand_04.txt, 40_rand_05.txt, 40_rand_06.txt, 40_rand_07.txt, 40_rand_08.txt, 40_rand_09.txt, 40_rand_10.txt, 50_hand_01.txt, 50_hand_02.txt, 50_hand_03.txt, 50_hand_04.txt, 50_hand_05.txt, 60_rand_01.txt, 60_rand_02.txt, 60_rand_03.txt, 60_rand_04.txt, 60_rand_05.txt, 60_rand_06.txt, 60_rand_07.txt, 60_rand_08.txt, 70_hand_01.txt, 70_hand_02.txt, 70_hand_03.txt, 70_hand_04.txt, 70_hand_05.txt, 70_hand_06.txt, 70_hand_07.txt
All 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 10_rand_01.txt, 10_rand_02.txt, 10_rand_03.txt, 10_rand_04.txt, 10_rand_05.txt, 20_hand_01.txt, 20_hand_02.txt, 20_hand_03.txt, 20_hand_04.txt, 20_hand_05.txt, 40_rand_01.txt, 40_rand_02.txt, 40_rand_03.txt, 40_rand_04.txt, 40_rand_05.txt, 40_rand_06.txt, 40_rand_07.txt, 40_rand_08.txt, 40_rand_09.txt, 40_rand_10.txt, 50_hand_01.txt, 50_hand_02.txt, 50_hand_03.txt, 50_hand_04.txt, 50_hand_05.txt, 60_rand_01.txt, 60_rand_02.txt, 60_rand_03.txt, 60_rand_04.txt, 60_rand_05.txt, 60_rand_06.txt, 60_rand_07.txt, 60_rand_08.txt, 70_hand_01.txt, 70_hand_02.txt, 70_hand_03.txt, 70_hand_04.txt, 70_hand_05.txt, 70_hand_06.txt, 70_hand_07.txt, 80_rand_01.txt, 80_rand_02.txt, 80_rand_03.txt, 80_rand_04.txt, 80_rand_05.txt, 80_rand_06.txt, 80_rand_07.txt, 80_rand_08.txt, 80_rand_09.txt, 80_rand_10.txt, 90_hand_01.txt, 90_hand_02.txt, 90_hand_03.txt, 90_hand_04.txt, 90_hand_05.txt, 90_hand_06.txt, 90_hand_07.txt, 90_hand_08.txt, 90_hand_09.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 27 ms 900 KB
00_example_02.txt AC 26 ms 928 KB
00_example_03.txt AC 25 ms 920 KB
10_rand_01.txt AC 25 ms 928 KB
10_rand_02.txt AC 26 ms 924 KB
10_rand_03.txt AC 26 ms 928 KB
10_rand_04.txt AC 26 ms 932 KB
10_rand_05.txt AC 26 ms 932 KB
20_hand_01.txt AC 27 ms 924 KB
20_hand_02.txt AC 27 ms 924 KB
20_hand_03.txt AC 27 ms 924 KB
20_hand_04.txt AC 27 ms 916 KB
20_hand_05.txt AC 28 ms 800 KB
40_rand_01.txt AC 27 ms 800 KB
40_rand_02.txt AC 27 ms 920 KB
40_rand_03.txt AC 30 ms 924 KB
40_rand_04.txt AC 26 ms 796 KB
40_rand_05.txt AC 27 ms 916 KB
40_rand_06.txt AC 26 ms 924 KB
40_rand_07.txt AC 26 ms 920 KB
40_rand_08.txt AC 27 ms 920 KB
40_rand_09.txt AC 27 ms 920 KB
40_rand_10.txt AC 27 ms 916 KB
50_hand_01.txt AC 25 ms 920 KB
50_hand_02.txt AC 25 ms 920 KB
50_hand_03.txt AC 27 ms 924 KB
50_hand_04.txt AC 26 ms 916 KB
50_hand_05.txt AC 25 ms 916 KB
60_rand_01.txt AC 28 ms 916 KB
60_rand_02.txt AC 26 ms 912 KB
60_rand_03.txt AC 27 ms 916 KB
60_rand_04.txt AC 27 ms 920 KB
60_rand_05.txt AC 28 ms 796 KB
60_rand_06.txt AC 27 ms 920 KB
60_rand_07.txt AC 27 ms 920 KB
60_rand_08.txt AC 27 ms 916 KB
70_hand_01.txt AC 25 ms 808 KB
70_hand_02.txt AC 27 ms 920 KB
70_hand_03.txt AC 28 ms 916 KB
70_hand_04.txt AC 26 ms 920 KB
70_hand_05.txt AC 27 ms 924 KB
70_hand_06.txt AC 28 ms 920 KB
70_hand_07.txt AC 26 ms 924 KB
80_rand_01.txt AC 369 ms 2872 KB
80_rand_02.txt AC 287 ms 2616 KB
80_rand_03.txt AC 617 ms 4152 KB
80_rand_04.txt AC 395 ms 3124 KB
80_rand_05.txt AC 491 ms 3616 KB
80_rand_06.txt AC 497 ms 3612 KB
80_rand_07.txt AC 551 ms 4028 KB
80_rand_08.txt AC 487 ms 3488 KB
80_rand_09.txt AC 559 ms 3880 KB
80_rand_10.txt AC 286 ms 2588 KB
90_hand_01.txt AC 56 ms 1464 KB
90_hand_02.txt AC 48 ms 1464 KB
90_hand_03.txt AC 715 ms 5052 KB
90_hand_04.txt AC 716 ms 4788 KB
90_hand_05.txt AC 762 ms 5048 KB
90_hand_06.txt AC 716 ms 4796 KB
90_hand_07.txt AC 706 ms 4796 KB
90_hand_08.txt AC 709 ms 4768 KB
90_hand_09.txt AC 706 ms 4796 KB