2017京東春招C/C++プログラミング問題(1)——チーム

1347 ワード

/*    :
        ,       n  。        :  ,      。
            1 n  ,   i      j      i j      。
           x,              x    ,
                       。         ,               ?

  :
     ,      n(1<=n<=100000),           n    ,            。      1-9     x,
            x   ;        X        ;        #         。            。

  :
     ,               。 

    :
9
X1X#2X#XX

    :
3

Hint:
       ,   9  , 2        1   ,       1,3     ,
 5        2   ,       3,6     。     ,   1,3,6           ,    3。*/

#include
#define MAXSIZE 100000
int main(){
	int n, i, pol[MAXSIZE],theif, temp,thf[MAXSIZE];
	char line[MAXSIZE];
	scanf("%d",&n);
	getchar();
	for(i=1; i<=n; i++){
		scanf("%c", &line[i]);
	}
	theif=0;
	for(i=1; i<=n; i++){
		if(line[i]=='X'){
			thf[i]=1;//i    
		}
	}
	for(i=1; i<=n; i++){
		if(line[i]>='1' && line[i]<='9'){
			pol[i]=line[i]-'0'; //i    
			for(temp=i+1; temp<=i+pol[i]; temp++){
				if(line[temp] == 'X' && thf[temp] != 0){
					theif++;
					thf[temp] = 0;
				}
			}
			for(temp=i-1; temp>=i-pol[i]; temp--){
				if(line[temp] == 'X' && thf[temp] != 0){
					theif++;
					thf[temp] = 0;
				}
			} 
		}
	}
	printf("%d", theif);
	return 0;
}