fork download
  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <assert.h>
  6. #include <limits.h>
  7. #include <stdbool.h>
  8.  
  9. int openingRightDoor(int n,char* str)
  10. {
  11. printf("%d",sizeof(str));
  12. int i,lnum[10]={0},rnum[10]={0},capslcnt[26]={0},capsrcnt[26]={0},rcnt[26]={0},lcnt[26]={0},cnt1=0,cnt2=0,cnt3=0;
  13. int ans=0;
  14. if(n % 2 != 0)
  15. {
  16. for(i=0;i<n;i++)
  17. {
  18. if(i < n/2 && isdigit(str[i]))
  19. lnum[str[i]-'0']++;
  20.  
  21. if(i > n/2 && isdigit(str[i]))
  22. rnum[str[i]-'0']++;
  23.  
  24. if(i < n/2 && isupper(str[i]))
  25. capslcnt[str[i]-'A']++;
  26.  
  27. if(i < n/2 && islower(str[i]))
  28. {
  29.  
  30. // printf("entering\n");
  31. lcnt[str[i]-'a']++;
  32. }
  33.  
  34. if(i > n/2 && islower(str[i]))
  35. rcnt[str[i]-'a']++;
  36.  
  37. if(i > n/2 && isupper(str[i]))
  38. capsrcnt[str[i]-'A']++;
  39. }
  40.  
  41. for(i=0;i<26;i++)
  42. {
  43. // printf("for %c, capslcnt = %d , capsrcnt = %d, lcnt = %d, rcnt = %d\n",i+'a',capslcnt[i],capsrcnt[i],lcnt[i],rcnt[i]);
  44. cnt1 += abs(capslcnt[i]-capsrcnt[i]);
  45. cnt2 += abs(lcnt[i]-rcnt[i]);
  46. }
  47. for(i=0;i<10;i++)
  48. {
  49. cnt3 += abs(lnum[i]-rnum[i]);
  50. }
  51. //printf("%d",cnt1+cnt2+cnt3);
  52. ans = cnt1+cnt2+cnt3;
  53. }
  54. else
  55. {
  56. for(i=0;i<n;i++)
  57. {
  58. if(i < n/2-1 && isdigit(str[i]))
  59. {
  60.  
  61. //printf("here in no - %d\n",str[i]-'0');
  62. lnum[str[i]-'0']++;
  63. }
  64.  
  65. if(i > n/2-1 && isdigit(str[i]))
  66. rnum[str[i]-'0']++;
  67.  
  68. if(i < n/2-1 && isupper(str[i]))
  69. capslcnt[str[i]-'A']++;
  70.  
  71. if(i < n/2-1 && islower(str[i]))
  72. {
  73.  
  74. // printf("entering\n");
  75. lcnt[str[i]-'a']++;
  76. }
  77.  
  78. if(i > n/2 && islower(str[i]))
  79. rcnt[str[i]-'a']++;
  80.  
  81. if(i > n/2 && isupper(str[i]))
  82. capsrcnt[str[i]-'A']++;
  83. }
  84.  
  85. for(i=0;i<26;i++)
  86. {
  87. // printf("for %c, capslcnt = %d , capsrcnt = %d, lcnt = %d, rcnt = %d\n",i+'a',capslcnt[i],capsrcnt[i],lcnt[i],rcnt[i]);
  88. cnt1 += abs(capslcnt[i]-capsrcnt[i]);
  89. cnt2 += abs(lcnt[i]-rcnt[i]);
  90. }
  91. for(i=0;i<10;i++)
  92. {
  93. cnt3 += abs(lnum[i]-rnum[i]);
  94. }
  95.  
  96. if(str[n/2-1] == str[n/2])
  97. //printf("%d",cnt1+cnt2+cnt3);
  98. ans = cnt1+cnt2+cnt3;
  99. else
  100. //printf("%d",cnt1+cnt2+cnt3+2);
  101. ans = cnt1+cnt2+cnt3+2;
  102. }
  103. return ans;
  104. }
  105.  
  106.  
  107. int main() {
  108. int output = 0;
  109. int ip1;
  110. scanf("%d", &ip1);
  111. char* ip2;
  112. ip2 = (char *)malloc(512000 * sizeof(char));
  113. scanf("\n%[^\n]",ip2);
  114. output = openingRightDoor(ip1,ip2);
  115. printf("%d\n", output);
  116. return 0;
  117. }
Success #stdin #stdout 0s 10320KB
stdin
Standard input is empty
stdout
80