Cod sursa(job #2088261)

Utilizator Consti.001FMI Dranca Constantin Consti.001 Data 14 decembrie 2017 21:36:58
Problema A+B Scor 0
Compilator cpp Status done
Runda Lista lui wefgef Marime 2.41 kb
#include<fstream>
#include<cstring>
#include<vector>
#include<iostream>
using namespace std;

ifstream f("data.in");
ofstream g("data.out");

struct hashcuv
{
    int val;
    int ordin;
};

int main()
{
    int n;
    f>>n;
    char **lista=new char* [n];
    int v[n];
    for(int i=0;i<n;++i)
    {
        lista[i]=new char[200];
        v[i]=0;
        f>>lista[i];
    }
    hashcuv caracter[27][27];
    for(int i=0;i<=26;++i)
    {
        for(int j=0;j<=26;++j)
            {
            caracter[i][j].val=0;
            caracter[i][j].ordin=0;
            }
    }
    int maxi=0;
    int last_word;
    for(int i=n-1;i>=0;--i)
    {
        char a,b,c,d;
        a=lista[i][strlen(lista[i])-1];
        b=lista[i][strlen(lista[i])-2];
        c=lista[i][0];
        d=lista[i][1];
        if(caracter[int(c)-97][int(d)-97].val<(caracter[int(b)-97][int(a)-97].val+1))
        {
            caracter[int(c)-97][int(d)-97].val= caracter[int(b)-97][int(a)-97].val+1;
            caracter[int(c)-97][int(d)-97].ordin=i;
            v[i]=caracter[int(c)-97][int(d)-97].val;
        }
        if(caracter[int(c)-97][int(d)-97].val>maxi)
        {
            maxi=caracter[int(c)-97][int(d)-97].val;
            last_word=i;
        }
       // g<<c<<d<<"  "<<b<<a<<"\n";
    }


    /*for(int i=0;i<26;++i)
    {
        for(int j=0;j<26;++j)
        g<<caracter[i][j].ordin<<" ";
        g<<"\n";
    }*/
    g<<maxi<<"\n";
    g<<lista[last_word]<<"\n"; --maxi;
    for(int i=last_word+1;i<n&&maxi>0;++i)
    {
       char a=lista[i][0];
        char b=lista[i][1];
        if(v[i]==maxi)
        {   cout<<"AICICICICI\n";

            char c,d;
            c=lista[last_word][strlen(lista[last_word])-2];
             d=lista[last_word][strlen(lista[last_word])-1];
             if(a==c&&b==d)
                {
                    cout<<"Acum\n";
                    --maxi;
                    g<<lista[i]<<"\n";
                    last_word=i;
                }
        }
    }
    /*while(maxi>0)
    {

        g<<lista[last_word]<<"\n";
        char a,b;
        a=lista[last_word][strlen(lista[last_word])-2];
        b=lista[last_word][strlen(lista[last_word])-1];
        last_word=caracter[int(a)-97][int(b)-97].ordin;
        --maxi;
    }
    /*for(int i=0;i<n;++i)
    {
        g<<lista[i]<<" ";
        g<<"\n";
    }*/
    return 0;
}