Submission #31923

#TimeUsernameProblemLanguageResultExecution timeMemory
31923chonkaThree Friends (BOI14_friends)C++98
100 / 100
123 ms27320 KiB
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std ;

#define MAXN 2000007

int n ;
string a ;
int pref[ MAXN ] ;
int suff[ MAXN ] ;


bool f ( string s ) {
    int i ;
    int pos = 0 ;
    int br = 0 ;
    for ( i = 0 ; i < n ; i ++ ) {
        if ( a[ i ] == s[ pos ] ) {
            pos ++ ;
        }
        if ( pos == ( n / 2 ) ) {
            br ++ ;
            pos = 0 ;
        }
    }
    return ( br == 2 ) ;
}

void input ( ) {
    cin >> n ;
    cin >> a ;
}

void solve ( ) {
    if ( ( n % 2 ) == 0 ) { cout << "NOT POSSIBLE\n" ; return ; }
    int i ;
    int pos = ( n / 2 ) ;
    string x , y ;
    x.clear ( ) ;
    y.clear ( ) ;
    for ( i = 0 ; i < pos ; i ++ ) {
        x += a[ i ] ;
    }
    for ( i = pos + 1 ; i < n ; i ++ ) {
        y += a[ i ] ;
    }
    if ( x == y ) { cout << x << "\n" ; return ; }
    if ( f ( x ) == true && f ( y ) == true ) { cout << "NOT UNIQUE\n" ; }
    else if ( f ( x ) == true ) { cout << x << "\n" ; }
    else if ( f ( y ) == true ) { cout << y << "\n" ; }
    else { cout << "NOT POSSIBLE\n" ; }
}

int main ( ) {
    input ( ) ;
    solve ( ) ;
    return 0 ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...