답안 #860787

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
860787 2023-10-14T09:37:21 Z Ellinor 세 명의 친구들 (BOI14_friends) C++14
100 / 100
17 ms 6164 KB
#include <bits/stdc++.h>
using namespace std;

#pragma GCC optimize("Ofast,inline") // Ofast = O3,fast-math,allow-store-data-races,no-protect-parens
#pragma GCC optimize ("unroll-loops")

#pragma GCC target("bmi,bmi2,lzcnt,popcnt")                      // bit manipulation
#pragma GCC target("movbe")                                      // byte swap
#pragma GCC target("aes,pclmul,rdrnd")                           // encryption
#pragma GCC target("avx,avx2,f16c,fma,sse3,ssse3,sse4.1,sse4.2")

typedef long long ll;
#define rep(i, a, b) for (int i = (a); i < int(b); i++)
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
#define pb push_back

inline void fast() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); }

ll INF = 1000000000;
ll mod = 1e9 + 7;

#define int ll
#define float double

//
ll N;
string s;

int32_t main()
{
    fast();
    cin >> N;
    cin >> s;
    if (N % 2 == 0) {
        cout << "NOT POSSIBLE\n";
        exit(0);
    }

    ll n = N / 2;
    vector<string> ans;

    if (s[1] == s[n + 1]) {
        string ns = "";
        ns.pb(s[1]);
        rep(at, 2, n + 1) {
            if (s[at] == s[n + at]) {
                ns.pb(s[at]);
            }
            else break;
        }
        if (ns.size() == n) {
            ans.pb(ns);
        }
    }

    if (s[0] == s[n]) {
        int p = 0;
        string ns = "";
        ns.pb(s[0]);
        rep(at, 1, n) {
            if (s[at] == s[n + at + p]) {
                ns.pb(s[at]);
            }
            else if (p == 0) {
                p = 1;
                at--;
            }
            else break;
        }
        if (ns.size() == n) {
            if (ans.size() == 1) {
                bool same = true;
                rep(i,0,n) {
                    if (ns[i] != ans[0][i]) {
                        same = false;
                        break;
                    }
                }
                if (!same) ans.pb(ns);
            }
            else ans.pb(ns);
        }
    }

    if (s[0] == s[n+1]) {
        int p = 0;
        string ns = "";
        ns.pb(s[n+1]);
        rep(at, 1, n) {
            if (s[at + p] == s[n + 1 + at]) {
                ns.pb(s[n + 1 + at]);
            }
            else if (p == 0) {
                p = 1;
                at--;
            }
            else break;
        }
        if (ns.size() == n) {
            if (ans.size() > 0) {
                bool bb = false;
                rep(j, 0, ans.size()) {
                    bool same = true;
                    rep(i,0,n) {
                        if (ns[i] != ans[j][i]) {
                            same = false;
                            break;
                        }
                    }
                    if (same) bb = true;
                }
                if (!bb) ans.pb(ns);
            }
            else ans.pb(ns);
        }
    }
    
    if (ans.size() == 1) cout << ans[0] << "\n";
    else if (ans.size() > 1) cout << "NOT UNIQUE\n";
    else cout << "NOT POSSIBLE\n";
}

Compilation message

friends.cpp: In function 'int32_t main()':
friends.cpp:52:23: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   52 |         if (ns.size() == n) {
      |             ~~~~~~~~~~^~~~
friends.cpp:71:23: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   71 |         if (ns.size() == n) {
      |             ~~~~~~~~~~^~~~
friends.cpp:100:23: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
  100 |         if (ns.size() == n) {
      |             ~~~~~~~~~~^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 356 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 344 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 392 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 344 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 0 ms 348 KB Output is correct
28 Correct 0 ms 348 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 0 ms 348 KB Output is correct
33 Correct 0 ms 348 KB Output is correct
34 Correct 0 ms 452 KB Output is correct
35 Correct 0 ms 344 KB Output is correct
36 Correct 0 ms 348 KB Output is correct
37 Correct 0 ms 348 KB Output is correct
38 Correct 0 ms 348 KB Output is correct
39 Correct 1 ms 348 KB Output is correct
40 Correct 0 ms 348 KB Output is correct
41 Correct 1 ms 348 KB Output is correct
42 Correct 0 ms 348 KB Output is correct
43 Correct 0 ms 348 KB Output is correct
44 Correct 0 ms 348 KB Output is correct
45 Correct 1 ms 348 KB Output is correct
46 Correct 0 ms 348 KB Output is correct
47 Correct 1 ms 344 KB Output is correct
48 Correct 0 ms 344 KB Output is correct
49 Correct 0 ms 348 KB Output is correct
50 Correct 0 ms 348 KB Output is correct
51 Correct 0 ms 344 KB Output is correct
52 Correct 0 ms 348 KB Output is correct
53 Correct 0 ms 348 KB Output is correct
54 Correct 0 ms 460 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 5316 KB Output is correct
2 Correct 8 ms 5116 KB Output is correct
3 Correct 8 ms 5116 KB Output is correct
4 Correct 8 ms 5120 KB Output is correct
5 Correct 8 ms 5120 KB Output is correct
6 Correct 3 ms 2552 KB Output is correct
7 Correct 17 ms 6164 KB Output is correct
8 Correct 12 ms 5128 KB Output is correct
9 Correct 11 ms 4944 KB Output is correct
10 Correct 10 ms 4864 KB Output is correct
11 Correct 3 ms 2552 KB Output is correct
12 Correct 1 ms 344 KB Output is correct
13 Correct 0 ms 344 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 600 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 344 KB Output is correct
20 Correct 1 ms 348 KB Output is correct
21 Correct 1 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 344 KB Output is correct
26 Correct 0 ms 344 KB Output is correct
27 Correct 0 ms 348 KB Output is correct
28 Correct 0 ms 348 KB Output is correct
29 Correct 0 ms 344 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 0 ms 348 KB Output is correct
33 Correct 0 ms 348 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 0 ms 348 KB Output is correct
36 Correct 0 ms 348 KB Output is correct
37 Correct 0 ms 348 KB Output is correct
38 Correct 0 ms 348 KB Output is correct
39 Correct 0 ms 348 KB Output is correct
40 Correct 1 ms 348 KB Output is correct
41 Correct 0 ms 348 KB Output is correct
42 Correct 0 ms 348 KB Output is correct
43 Correct 0 ms 348 KB Output is correct
44 Correct 0 ms 348 KB Output is correct
45 Correct 0 ms 348 KB Output is correct
46 Correct 0 ms 344 KB Output is correct
47 Correct 0 ms 348 KB Output is correct
48 Correct 0 ms 348 KB Output is correct
49 Correct 0 ms 348 KB Output is correct
50 Correct 0 ms 348 KB Output is correct
51 Correct 0 ms 348 KB Output is correct
52 Correct 0 ms 452 KB Output is correct
53 Correct 0 ms 348 KB Output is correct
54 Correct 1 ms 460 KB Output is correct