結果
問題 |
No.204 ゴールデン・ウィーク(2)
|
ユーザー |
![]() |
提出日時 | 2015-05-08 23:10:07 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,147 bytes |
コンパイル時間 | 756 ms |
コンパイル使用メモリ | 91,860 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-13 11:48:47 |
合計ジャッジ時間 | 5,516 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 12 WA * 10 RE * 24 |
ソースコード
#include <iostream> #include <vector> #include <deque> #include <stack> #include <memory> #include <functional> #include <algorithm> #include <map> #include <list> #include <complex> #include <string> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <numeric> #include <array> using namespace std; typedef std::pair<int, int> pii; typedef long long int ll; #define pb push_back template < class BidirectionalIterator > bool next_combination(BidirectionalIterator first1, BidirectionalIterator last1, BidirectionalIterator first2, BidirectionalIterator last2) { if ((first1 == last1) || (first2 == last2)) { return false; } BidirectionalIterator m1 = last1; BidirectionalIterator m2 = last2; --m2; while (--m1 != first1 && !(*m1 < *m2)){ } bool result = (m1 == first1) && !(*first1 < *m2); if (!result) { while (first2 != m2 && !(*m1 < *first2)) { ++first2; } first1 = m1; std::iter_swap(first1, first2); ++first1; ++first2; } if ((first1 != last1) && (first2 != last2)) { m1 = last1; m2 = first2; while ((m1 != first1) && (m2 != last2)) { std::iter_swap(--m1, m2); ++m2; } std::reverse(first1, m1); std::reverse(first1, last1); std::reverse(m2, last2); std::reverse(first2, last2); } return !result; } template < class BidirectionalIterator > bool next_combination(BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last) { return next_combination(first, middle, middle, last); } int main(){ std::vector<char> data; std::vector<int> x; const int N = 14; int D; cin >> D; char c; for (int i = 0; i < N; ++i){ cin >> c; data.push_back(c); if(c == 'x'){ x.pb(i); } } int result = 0; do{ std::vector<char> tmp; for (int i = 0; i < data.size(); ++i) { tmp.pb(data[i]); } for (int i = 0; i < D; ++i) { tmp[x[i]] = 'o'; } int count = 0; for (int i = 0; i < N; ++i) { if(tmp[i] == 'o'){ count++; }else{ count = 0; } result = max(result, count); } } while (next_combination(x.begin(), x.begin() + D, x.end())); std::cout << result << std::endl; return 0; }