Cod sursa(job #2035880)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 9 octombrie 2017 21:54:12
Problema Elimin 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>

#define MaxN 2005
#define INF 2140000000
#define MOD 1000000007

using namespace std;

FILE*IN,*OUT;

int N;
struct dynamic
{
    short L;
    char Digit;
    pair<short,short>to;
}d[MaxN][MaxN];
char str[MaxN],out[MaxN];
bool comp(dynamic a,dynamic b)
{
    return a.L<b.L||(a.L==b.L&&a.Digit<b.Digit);
}
void Solve(short i,short j)
{
    fprintf(OUT,"%c",d[i][j].Digit);
    if(d[i][j].to!=make_pair(0,0))

    if(d[i][j].L>1)
        Stack[++S]=
}
int main()
{
    IN=fopen("elimin2.in","r");
    OUT=fopen("elimin2.out","w");

    fscanf(IN,"%s",str);
    N=strlen(str);
    for(int i=0;i<N;i++)
    {
        d[i][i].L=1;
        d[i][i].Digit=str[i];
        d[i][i].to={0,0};
    }
    for(int D=1;D<N;D++)
        for(int i=0;i<N-D;i++)
        {
            d[i][i+D]=d[i][i+D-1];
            if(comp(d[i][i+D],d[i+1][i+D]))
                d[i][i+D]=d[i+1][i+D];
            if(str[i]==str[i+D])
            {
                dynamic t=d[i+1][i+D-1];
                t.L+=2;
                t.Digit=str[i];
                if(i+1>i+D-1)
                    t.to={0,0};
                else t.to={i+1,i+D-1};
                if(comp(d[i][i+D],t))
                    d[i][i+D]=t;
            }
        }
    Solve(0,N-1);
    return 0;
}