제출 #38470

#제출 시각아이디문제언어결과실행 시간메모리
38470oTTo_22세 명의 친구들 (BOI14_friends)C++14
0 / 100
500 ms15984 KiB
#include <bits/stdc++.h>
#define fi first
#define se second
#define ll long long
const int INF=1e9+1;
const int MAXN=1e5+1;
const int MOD=13371337;
using namespace std;

vector < int > pfunc(string str){
    vector < int > p(str.size());
    int k=0;

    for (int l=1; l<str.size(); l++) {
        while (k>0 && str[k]!=str[l])
            k=p[k-1];

        if (str[k]==str[l])
            k++;
        p[l]=k;
    }
    return p;
}

int main() {

    ios_base::sync_with_stdio(false);
    cin.tie(0);

    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);

    int n;
    string s;
    cin >> n >> s;

    if (n%2==0) {
        cout << "NOT POSSIBLE";
        return 0;
    }

    bool cnt=0;
    string ans;

    for (int i=0; i<n; i++) {
        string st=s;
        st.erase(i,1);
        vector < int > p=pfunc(st);
        //for (int i=0; i<n-1; i++)
        //    cout << p[i] << " ";
        //cout << "\n";
        if (p[n-2]>=(n-1)/2) {
            if (cnt) {
                cout << "NOT UNIQUE";
                return 0;
            }
            else {
                cnt++;
                for (int j=0; j<(n-1)/2; j++)
                    ans+=st[j];
            }
        }
    }

    if (cnt==0)
        cout << "NOT POSSIBLE";
    else
        cout << ans;

    return 0;
}

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

friends.cpp: In function 'std::vector<int> pfunc(std::__cxx11::string)':
friends.cpp:14:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int l=1; l<str.size(); l++) {
                    ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...