Cod sursa(job #648585)

Utilizator PetcuIoanPetcu Ioan Vlad PetcuIoan Data 13 decembrie 2011 19:31:51
Problema Text Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<stdio.h>
#include<assert.h>
#include<algorithm>
using namespace std;

int n,sol,d1[30],d[220];
char c[220][22];

void read()
{
    assert(freopen("text.in","r",stdin)!=NULL);
    char t;
    int state=0;
    n=1;
    while(scanf("%c",&t)!=EOF)
    {
        if(t=='\n' || t==' ')
            state=1;
        else
        {
            if(state==0)
                c[n][++c[n][0]]=t;
            else
            {
                state=0;
                c[++n][++c[n][0]]=t;
            }
        }
    }
}

void solve()
{
    int i;
    for(i=n;i>0;--i)
    {
        d[i]=d1[c[i][c[i][0]]-'a']+1;
        d1[c[i][1]-'a']=d[i];
        sol=max(sol,d[i]);
    }
}

void write()
{
    assert(freopen("text.out","w",stdout)!=NULL);
    char t=0;
    int i,j;
    printf("%d\n%d\n",n,n-sol);
    for(i=1;i<=n;++i)
    {
        if(t==c[i][1] || t==0)
            if(d[i]==sol)
            {
                for(j=1;j<=c[i][0];++j)
                    printf("%c",c[i][j]);
                printf("\n");
                --sol;
                t=c[i][c[i][0]];
            }
    }
}

int main()
{
    read();
    solve();
    write();
    return 0;
}