C++语言: 高亮代码由发芽网提供
#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
char str[200001];
char cc[101];
int k;
int letter[26][200001];
int n;
int len;
void search(int p, int c) {
int i, j;
for (i = 0; p > letter[c][i]; i++)
p -= letter[c][i];
letter[c][i]--;
for (j = len*i; p > 0; j++)
if (str[j] == 'a'+c)
p--;
str[j-1] = 0;
}
int main() {
scanf("%d %s", &k, cc);
len = strlen(cc);
for (int i = 0; i < len; i++)
letter[cc[i]-'a'][0]++;
for (int i = 1; i < k; i++)
for (int j = 0; j < 26; j++)
letter[j][i] = letter[j][0];
// printf("...\n");
for (int i = 0; i < k; i++)
strcpy(str+i*len, cc);
// printf("%s\n", str);
int p;
char c;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %c", &p, &c);
search(p, c-'a');
}
for (int i = 0; i < len * k; i++)
if (str[i] != 0)
printf("%c", str[i]);
printf("\n");
return 0;
}
#include <cstring>
#include <stdio.h>
using namespace std;
char str[200001];
char cc[101];
int k;
int letter[26][200001];
int n;
int len;
void search(int p, int c) {
int i, j;
for (i = 0; p > letter[c][i]; i++)
p -= letter[c][i];
letter[c][i]--;
for (j = len*i; p > 0; j++)
if (str[j] == 'a'+c)
p--;
str[j-1] = 0;
}
int main() {
scanf("%d %s", &k, cc);
len = strlen(cc);
for (int i = 0; i < len; i++)
letter[cc[i]-'a'][0]++;
for (int i = 1; i < k; i++)
for (int j = 0; j < 26; j++)
letter[j][i] = letter[j][0];
// printf("...\n");
for (int i = 0; i < k; i++)
strcpy(str+i*len, cc);
// printf("%s\n", str);
int p;
char c;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %c", &p, &c);
search(p, c-'a');
}
for (int i = 0; i < len * k; i++)
if (str[i] != 0)
printf("%c", str[i]);
printf("\n");
return 0;
}