zoukankan      html  css  js  c++  java
  • F

    You are given a string q. A sequence of k strings s1, s2, ..., sk is called beautiful, if the concatenation of these strings is string q (formally, s1 + s2 + ... + sk = q) and the first characters of these strings are distinct.

    Find any beautiful sequence of strings or determine that the beautiful sequence doesn't exist.


    Input

    The first line contains a positive integer k (1 ≤ k ≤ 26) — the number of strings that should be in a beautiful sequence.

    The second line contains string q, consisting of lowercase Latin letters. The length of the string is within range from 1 to 100, inclusive.

    Output

    If such sequence doesn't exist, then print in a single line "NO" (without the quotes). Otherwise, print in the first line "YES" (without the quotes) and in the next k lines print the beautiful sequence of strings s1, s2, ..., sk.

    If there are multiple possible answers, print any of them.

    Examples

    Input

    1
    abca
    

    Output

    YES
    abca
    

    Input

    2
    aaacas
    

    Output

    YES
    aaa
    cas
    

    Input

    4
    abc
    

    Output

    NO
    

    Note

    In the second sample there are two possible answers: {"aaaca", "s"} and {"aaa", "cas"}.

    #include<iostream>

    #include<string>
    #include<cstring>
    #include<map>
    #include<queue>
    using namespace std;
    map<char,int >wakaka;
    int a[1010];
    int main()
    {
        int n;
        cin>>n;
        memset(a,0,sizeof(a));
        string s;
        cin>>s;
        int len=s.size();
        if(len<n)
        {
            cout<<"NO"<<endl;
        }
        else
        {
            a[0]=0;
            int ans=0;
            for(int i=0; i<len; i++)
            {
                if(wakaka[s[i]]==0)
                {
                    ans++;
                    a[ans]=i;
                }
                wakaka[s[i]]++;
            }
            if(ans>=n)
            {
                cout<<"YES"<<endl;
                for(int i=1; i<=ans; i++)
                {
                    if(i==n)
                    {
                        for(int j=a[i]; j<len; j++)
                        {
                            cout<<s[j];
                        }
                        break;
                    }
                    for(int j=a[i]; j<a[i+1]; j++)
                    {
                        cout<<s[j];
                    }
                    cout<<endl;
                }
            }
            else
            {
                cout<<"NO"<<endl;
            }
        }
        return 0;
    }
     

  • 相关阅读:
    Qt Quick实现的涂鸦程序
    Java并发学习之十九——线程同步工具之Phaser
    poj 1845(等比数列前n项和及高速幂)
    装饰模式(旧恋)
    cocos2d-x 3.1.1 学习笔记[3]Action 动作
    Nmap 源代码学习四 软件简单使用
    关于phpcmsv9更新缓存出现链接被重置的问题
    POJ 3159 Candies(SPFA+栈)差分约束
    Ubuntu 配置ISCSI服务
    iSCSI存储技术
  • 原文地址:https://www.cnblogs.com/letlifestop/p/10262996.html
Copyright © 2011-2022 走看看