Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <ctype.h>
- #include <string.h>
- #define MAX(a,b) (((a)>(b))?(a):(b))
- #define MIN(a,b) (((a)<(b))?(a):(b))
- int main(){
- char input[128] = { 0 }, cur;
- int i, lwr = 0, upr = 0, dig = 0, cat = 0, len;
- int replace, remove, cnt;
- scanf("%s", input);
- len = strlen(input);
- for(i = 0;input[i];i++){
- if(islower(input[i])){
- lwr = 1;
- }
- else if(isupper(input[i])){
- upr = 1;
- }
- else if(isdigit(input[i])){
- dig = 1;
- }
- }
- cat = lwr + upr + dig;
- if(len < 6){
- printf("%d\n", MAX(6 - len, 3 - cat));
- }
- else if(len <= 20){
- replace = 0;cnt = 0;
- cur = '#';
- for(i = 0;input[i];i++){
- if(input[i] == cur){
- cnt += 1;
- }
- else{
- replace += cnt / 3;
- cnt = 1;
- cur = input[i];
- }
- }
- replace += cnt / 3;
- printf("%d\n", MAX(replace, 3 - cat));
- }
- else{
- int rm2 = 0;
- cnt = 0;remove = len - 20;replace = 0;
- cur = '#';
- for(i = 0;input[i];i++){
- if(input[i] == cur){
- cnt += 1;
- }
- else{
- if(remove > 0 && cnt >= 3){
- if(cnt % 3 == 0){
- remove -= 1;replace -= 1;
- }
- else if(cnt % 3 == 1){
- rm2 += 1;
- }
- }
- replace += cnt / 3;
- cnt = 1;cur = input[i];
- }
- }
- if(remove > 0 && cnt >= 3){
- if(cnt % 3 == 0){
- remove -= 1;replace -= 1;
- }
- else if(cnt % 3 == 1){
- rm2 += 1;
- }
- }
- replace += cnt / 3;
- int use2 = MIN(replace, MIN(rm2, remove / 2));
- replace -= use2;remove -= use2 * 2;
- int use3 = MIN(replace, remove / 3);
- replace -= use3;
- remove -= use3 * 3;
- printf("%d\n", (len - 20) + MAX(replace, 3 - cat));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement