結果

問題 No.204 ゴールデン・ウィーク(2)
ユーザー augusuto04augusuto04
提出日時 2015-06-08 21:46:21
言語 C++11
(gcc 11.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,039 bytes
コンパイル時間 362 ms
コンパイル使用メモリ 53,184 KB
最終ジャッジ日時 2024-04-27 02:07:53
合計ジャッジ時間 1,070 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
main.cpp: In function ‘int solve(std::string, int)’:
main.cpp:18:3: error: ‘vector’ was not declared in this scope
   18 |   vector<int> vec;
      |   ^~~~~~
main.cpp:3:1: note: ‘std::vector’ is defined in header ‘<vector>’; did you forget to ‘#include <vector>’?
    2 | #include <algorithm>
  +++ |+#include <vector>
    3 | using namespace std;
main.cpp:18:10: error: expected primary-expression before ‘int’
   18 |   vector<int> vec;
      |          ^~~
main.cpp:24:7: error: ‘vec’ was not declared in this scope
   24 |       vec.push_back(tmp);
      |       ^~~
main.cpp:28:3: error: ‘vec’ was not declared in this scope
   28 |   vec.push_back(tmp);
      |   ^~~

ソースコード

diff #

#include <iostream>
#include <algorithm>
using namespace std;

string conv(string str){
  while(str[0] == 'x')
    str = str.substr(1, str.size() - 1);
  while(str[str.size() - 1] == 'x')
    str = str.substr(0, str.size() - 1);

  return str;
}

int solve(string str, int d){
  str = conv(str);
  if(str.size() == 0)
    return d;
  vector<int> vec;
  int tmp = 1;
  for(int i = 1; i < str.size(); i++){
    if(str[i] == str[i - 1])
      tmp++;
    else {
      vec.push_back(tmp);
      tmp = 1;
    }
  }
  vec.push_back(tmp);

  if(vec.size() == 1)
    return vec[0] + d;

  int result;
  result = vec[0] + d;
  result = max(result, vec[vec.size() - 1] + d);
  for(int i = 1; i < vec.size(); i += 2){
    if(vec[i] <= d)
      result = max(result, vec[i - 1] + vec[i] + vec[i + 1]);
    else {
      result = max(result, vec[i - 1] + d);
      result = max(result, vec[i + 1] + d);
    }
  }

  return result;
}

int main(){
  int d;
  cin >> d;
  string a, b;
  cin >> a >> b;
  string str = a + b;
  cout << solve(str, d) << endl;
}
0