diff options
Diffstat (limited to '3a.c')
| -rw-r--r-- | 3a.c | 65 | 
1 files changed, 0 insertions, 65 deletions
@@ -1,65 +0,0 @@ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - - -int -chrcmp(void const * a, void const * b) -{ -	return (*(char const *) a) - *((char const *) b); -} - - -int -priority(int c) -{ -	if (c >= 'A' && c <= 'Z') -		return 27 + c - 'A'; -	if (c >= 'a' && c <= 'z') -		return 1 + c - 'a'; -	fprintf(stderr, "Unexpected priority request: %c\n", c); -	return -1; -} - - -int -main() -{ -	char buf[BUFSIZ]; -	int score = 0; - -	while (fgets(buf, sizeof(buf), stdin)) { -		int len, i, j; - -		len = strlen(buf); -		if (len && buf[len - 1] == '\n') -			--len; -		if (len % 2 == 1) -			fprintf(stderr, "Unexpected length: %d\n", len); - -		qsort(buf, len / 2, 1, chrcmp); -		qsort(buf + len / 2, len / 2, 1, chrcmp); - -		i = 0; -		j = len / 2; -		while (i < len / 2 && j < len) { -			if (buf[i] < buf[j]) -				++i; -			else if (buf[j] < buf[i]) -				++j; -			else -				break; -		} -		if (i >= len / 2 || j >= len) { -			fprintf(stderr, "No match found in %s\n", buf); -			return -1; -		} -		score += priority(buf[i]); -	} - -	printf("Score: %d\n", score); - -	return 0; -} -  | 
