이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define TRACE(x) cerr << #x << " :: " << x << endl
#define _ << " " <<
#define SZ(x) (int)(x).size()
#define ALL(x) (x).begin(),(x).end()
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define RFOR(i,a,b) for (int i=(a);i>=(b);--i)
const int mxN = 2e6+5;
int N, cnt;
string S, ans;
void solve(bool rev) {
int m = N/2, l = -1, r = m+1, ok;
ok = 1;
FOR(i,0,m){
ok &= S[i] == S[i+m+1];
if (ok) l = i;
else break;
}
ok = 1;
RFOR(i,m,0){
ok &= S[i] == S[i+m];
if (ok) r = i;
else break;
}
if (l+2 == r) {
if (rev && l+1 == m) return;
ans = "";
FOR(i,0,m-1 + (l+1 < m)){
if (i != l+1) ans += S[i];
}
if (rev) reverse(ALL(ans));
}
cnt += max(0,l+2-r+1);
}
int main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> N >> S;
solve(0);
reverse(ALL(S));
solve(1);
if (cnt == 0) cout << "NOT POSSIBLE" << '\n';
else if (cnt > 1) cout << "NOT UNIQUE" << '\n';
else cout << ans << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |