/* * Developer: Mihir Shah * Email: mihirsmi404@gmail.com */ #include #include #include #include #include #define si(n) scanf("%d", &n); #define sl(n) scanf("%ld", &n); #define sll(n) scanf("%lld", &n); #define pi(n) printf("%d\n", n); #define pl(n) printf("%ld", n); #define pll(n) printf("%lld", n); /* * This code is implementation of Merge Sort in C * This code is O(nlogn) in time complexity * Each recursive call needs O(n) auxillary space * This code can also be used to count number of inversions in given input array */ void initializeArray(int arr[], int value, int size) { int i; for(i = 0; i < size; i++) arr[i] = value; return; } void printArrayNewLine(int arr[], int size) { int i; for(int i = 0; i < size; i++) pi(arr[i]); } void printArraySpace(int arr[], int size) { int i; for(i = 0; i < size; i++) printf("%d ", arr[i]); printf("\n"); } void mergeSort(int arr[], int low, int high) { if(low == high) return; int mid,i; mid = (low + high) / 2; mergeSort(arr, low, mid); mergeSort(arr, mid + 1, high); int tempArray[high - low + 1]; int key1 = low, key2 = mid + 1; int size = (high - low + 1); //Storing sorted version in temporary array for(i = 0; i < size; i++) { if(key1 == mid + 1) { if(key2 != high + 1) { tempArray[i] = arr[key2]; key2++; } } else if(key2 == high + 1) { if(key1 != mid + 1) { tempArray[i] = arr[key1]; key1++; } } else { if(arr[key1] < arr[key2]) { tempArray[i] = arr[key1]; key1++; } else { tempArray[i] = arr[key2]; key2++; } } } //Now storing sorted array in main array for(i = low; i <= high; i++) { arr[i] = tempArray[i - low]; } return; } int binarySearch(int arr[], int low, int high, int value) { if(high >= low) { int mid = (low + high) / 2; if(arr[mid] == value) return mid; if(arr[mid] < value) return binarySearch(arr, mid + 1, high, value); return binarySearch(arr, low, mid - 1, value); } return -1; } //Main int main() { int arr[26]; initializeArray(arr, 0, 26); char str[20]; for(int i =0; i < 26; i++) si(arr[i]); scanf("%s",str); int l = strlen(str); int answer = l; int max = 0; for(int i = 0; i < l; i++) { int index = str[i] - 'a'; if(arr[index] > max) max = arr[index]; } pi(answer * max); return 0; }