Submission #697437

#TimeUsernameProblemLanguageResultExecution timeMemory
697437DeepessonThree Friends (BOI14_friends)C++17
100 / 100
32 ms5356 KiB
#include <bits/stdc++.h>
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    int N;
    std::cin>>N;
    if(!(N&1)){
        std::cout<<"NOT POSSIBLE\n";
        return 0;
    }
    int size = (N-1)/2;
    std::string s;
    std::cin>>s;
    int skips[2]={};
    int cur1=0,cur2=N-size;
    while(cur2!=N){
        if(s[cur1]==s[cur2]){
            ++cur1;
            ++cur2;
        }else {
            ++skips[0];
            if(skips[0]==2){
                break;
            }
            ++cur1;
        }
    }
    if(cur1!=size+1)skips[0]++;
    cur1=N-size-1,cur2=0;
    while(cur2!=size){
        if(s[cur1]==s[cur2]){
            ++cur1;
            ++cur2;
        }else {
            ++skips[1];
            if(skips[1]==2){
                break;
            }
            ++cur1;
        }
    }
    if(cur1!=N)skips[1]++;
    //std::cout<<skips[0]<<" "<<skips[1]<<"\n";
    if(skips[0]>1&&skips[1]>1){
        std::cout<<"NOT POSSIBLE\n";
        return 0;
    }else if(skips[0]<2&&skips[1]<2){///caso especial: ambas as strings sao iguais
        int cur1=0,cur2=N-size;
        while(cur2!=N){
            if(s[cur1]!=s[cur2]){
                std::cout<<"NOT UNIQUE\n";
                return 0;
            }
            ++cur1;
            ++cur2;
        }
        for(int i=0;i!=size;++i){
                std::cout<<s[i];
            }
            std::cout<<"\n";
    }else {
        if(skips[1]<2){
            for(int i=0;i!=size;++i){
                std::cout<<s[i];
            }
            std::cout<<"\n";
        }else {
            for(int i=N-size;i!=N;++i){
                std::cout<<s[i];
            }
            std::cout<<"\n";
        }
    }
 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...