結果
| 問題 | 
                            No.725 木は明らかに森である
                             | 
                    
| コンテスト | |
| ユーザー | 
                            👑  | 
                    
| 提出日時 | 2022-08-09 22:37:42 | 
| 言語 | C++17(gcc12)  (gcc 12.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,310 bytes | 
| コンパイル時間 | 965 ms | 
| コンパイル使用メモリ | 79,592 KB | 
| 最終ジャッジ日時 | 2025-01-30 19:51:40 | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 7 WA * 2 | 
ソースコード
#include <iostream>
#include <list>
#include <vector>
#include <string>
#include <stdio.h>
#include <stdint.h>
#include <iomanip>
using namespace std;
using uint = unsigned int;
using ll = long long;
#define CIN( LL , A ) LL A; cin >> A 
#define GETLINE( A ) string A; getline( cin , A ) 
#define FOR_ITR( ARRAY , ITR , END ) for( auto ITR = ARRAY .begin() , END = ARRAY .end() ; ITR != END ; ITR ++ ) 
int main()
{
  CIN( string , S );
  uint size = S.size();
  ll state = -1;
  // treeone
  // 0123456
  
  for( ll i = 0 ; i < size ; i++ ){
    const string c = S.substr( i , 1 );
    if( c == "t" ){
      state = 0;
    } else if( c == "r" ){
      if( state == 0 ){
	state++;
      } else {
	state = -1;
      }
    } else if( c == "e" ){
      if( state == 1 || state == 2 ){
	state++;
      } else if( state == 5 ){
	S = S.substr( 0 , i - 6 ) + "forest" + S.substr( i + 1 );
	size = S.size();
	i--;
	i--;
	// 二度目の置換は不要なのでディクリメントは2回
	// i--;
      } else {
	state = -1;
      }
    } else if( c == "o" ){
      if( state == 3 ){
	state++;
      } else {
	state = -1;
      }
    } else if( c == "n" ){
      if( state == 4 ){
	state++;
      } else {
	state = -1;
      }
    }
    
  }
  
  cout << S << endl;
  return 0;
}