From 2a7bc10f6c011d19fb3b0e73068f7e1a9c30ace0 Mon Sep 17 00:00:00 2001 From: Raphael McSinyx Date: Sat, 8 Oct 2016 09:56:43 +0700 Subject: Initial commit --- NTU/sagain.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 NTU/sagain.c (limited to 'NTU/sagain.c') diff --git a/NTU/sagain.c b/NTU/sagain.c new file mode 100644 index 0000000..243ea8c --- /dev/null +++ b/NTU/sagain.c @@ -0,0 +1,60 @@ +#include +#include +#include + +long *hist[26]; + + +void res(char s0[], + + +int main() +{ + short k; + char s[2000001], alpha; + long length, i, a[26] = {}; + + scanf("%hd", k); + scanf("%s", s); + + length = strlen(s); + + if (length > (k - 1) * 26) { + for (i = 0; i < length; i++) { + alpha = s[i] - 97; + a[alpha]++; + + if (a[alpha] == k) { + short j; + + for (j = 0; j < a[alpha]; j++) + printf("%c", alpha + 97); + + printf("\n"); + break; + } + } + } else { + hist = malloc(208 * length), tmp; + char map[26], j, chr2use = 0; + + for (i = 0; i < length; i++) { + alpha = s[i] - 97; + hist[alpha][a[alpha]] = i; + a[alpha]++; + } + + for (i = 0; i < 26; i++) + map[i] = i; + + for (i = 0; i < 25; i++) + for (j = i; j < 26; j++) + if (a[j] > a[i]) { + tmp = map[i]; + map[i] = map[j]; + map[j] = tmp; + } + } + + return 0; +} -- cgit 1.4.1