제출 #862384

#제출 시각아이디문제언어결과실행 시간메모리
862384maks007Necklace (Subtask 1-3) (BOI19_necklace1)C++14
9 / 85
1529 ms2904 KiB
#include "bits/stdc++.h" using namespace std; signed main () { string a, b; function <int(queue <char>)> get=[&](queue <char> str) { queue <char> ttr; int k = str.size(); set <queue <char>> shift; int cnt = str.size(); while(cnt --) { shift.insert(str); str.push(str.front()); str.pop(); } for(int i = 0; i < k; i ++) ttr.push(b[i]); for(int i = k; i < b.size(); i ++) { if(shift.count(ttr)) { return i-k; } ttr.pop(); ttr.push(b[i]); } if(shift.count(ttr)) { return (int)b.size()-k; } return -1; }; function<pair <int,int>(int)> good=[&](int sz) { queue <char> str; if(sz > a.size()) return make_pair(-1,-1); for(int i = 0; i < sz; i ++) str.push(a[i]); for(int i = sz; i < a.size(); i ++) { if(get(str) != -1) { return make_pair(i - sz, get(str)); } str.pop(); str.push(a[i]); } if(get(str) != -1) return make_pair((int)a.size() - sz, get(str)); return make_pair(-1,-1); }; cin >> a >> b; // for(int i = 0; i < min(a.size(), b.size()); i ++) { // cout << good(i).first << " " << good(i).second << "\n"; // } int l = 0, r = min(a.size(), b.size()); while(l < r) { int mid = (l + r + 1) / 2; if(good(mid).first != -1) l = mid; else r = mid-1; } // cout << l << " "; int mx = l, grana = good(l).first, granb = good(l).second; reverse(b.begin(), b.end()); l = 0, r = min(a.size(), b.size()); while(l < r) { int mid = (l + r + 1) / 2; if(good(mid).first != -1) l = mid; else r = mid-1; } if(l > mx) { mx = l; grana = good(l).first; granb = b.size() - (good(l).second+mx); } cout << mx << "\n" << grana << " " << granb; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

necklace.cpp: In lambda function:
necklace.cpp:18:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |   for(int i = k; i < b.size(); i ++) {
      |                  ~~^~~~~~~~~~
necklace.cpp: In lambda function:
necklace.cpp:32:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |   if(sz > a.size()) return make_pair(-1,-1);
      |      ~~~^~~~~~~~~~
necklace.cpp:34:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |   for(int i = sz; i < a.size(); i ++) {
      |                   ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...