File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change
1
+ /** THIS IS AN OUTPUT FILE. NOT EDIT THIS FILE DIRECTLY. **/
2
+ use proconio:: input;
3
+ use proconio:: marker:: * ;
4
+ use std:: marker:: PhantomData ;
5
+ use std:: cmp:: * ;
6
+ use std:: collections:: * ;
7
+
8
+ fn main ( ) {
9
+ input ! {
10
+ n: usize ,
11
+ k: usize ,
12
+ mut s: Chars
13
+ }
14
+
15
+ for i in 0 ..n {
16
+ if s[ i] != 'o' {
17
+ continue ;
18
+ }
19
+ if i > 0 { s[ i - 1 ] = '.' }
20
+ if i + 1 < n { s[ i + 1 ] = '.' }
21
+ }
22
+
23
+ let mut v = vec ! [ ] ;
24
+ let mut p = !0 ;
25
+ for i in 0 ..n {
26
+ if s[ i] == '?' { continue }
27
+ if p + 1 != i { v. push ( ( p + 1 , i) ) }
28
+ p = i;
29
+ }
30
+ if p + 1 != n { v. push ( ( p + 1 , n) ) }
31
+ let m = s. iter ( ) . filter ( |& & c| c == 'o' ) . count ( ) ;
32
+ if m == k {
33
+ s = s. iter ( ) . map ( |& c| if c == '?' { '.' } else { c} ) . collect ( ) ;
34
+ } else if m + v. iter ( ) . map ( |& ( l, r) | ( r + 1 - l) / 2 ) . sum :: < usize > ( ) == k {
35
+ for & ( l, r) in v. iter ( ) {
36
+ if ( r - l) & 1 == 0 { continue }
37
+ for i in l..r {
38
+ s[ i] = if ( i - l) & 1 == 0 { 'o' } else { '.' }
39
+ }
40
+ }
41
+ }
42
+ println ! ( "{}" , s. into_iter( ) . collect:: <String >( ) ) ;
43
+ }
You can’t perform that action at this time.
0 commit comments