제출 #642594

#제출 시각아이디문제언어결과실행 시간메모리
642594aebovNecklace (Subtask 1-3) (BOI19_necklace1)C++17
25 / 85
1584 ms304 KiB
#include<iostream> #include<vector> #include<algorithm> #include<cstring> #include<utility> #define pii pair<int, int> #define F first #define S second #define ll long long #define pb push_back using namespace std; int n ,m ; string s ,t; pair<int,pii> ans(string a, string b){ pair<int , pii > ret; n = a.size(), m = b.size(); for(int i = 0 ; i <= n; i ++){ for(int j = 0;j <= m; j ++){ int mx = 0; for(int k = 1 ; k <= min(i, m - j) ; k ++){ string s2 = string(a.begin() + i - k, a.begin() + i); string t2 = string(b.begin() + j, b.begin() + j + k); if(s2 == t2)mx = k; } for(int k = 0 ; k <= min (j, n - i); k ++){ string s2 = string(a.begin() + i, a.begin() + i + k); string t2 = string(b.begin() + j - k, b.begin() + j); if(s2 == t2){ ret = max(ret, {mx + k,{ i - mx, j - k } }); } } } } return ret; } int main(){ cin >> s >> t; auto ret = ans(s, t); reverse(t.begin(), t.end()); auto ter = ans(s, t); ter.S.S = (int)t.size() - ter.S.S - ter.F; ret = max(ret, ter); if(!ret.F){ cout << 0 << endl; return 0; } cout << ret.F << endl << ret.S.F << " " << ret.S.S << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...