jeudi 23 novembre 2017

397. Text Editor acm.sgu.com

i have a code and i don't know it's bug i submited the code and i get wrong answer on test 66 can someone help me?? i think my pointer work's great and there is no mistake on printing it but i don't know if i have a bug in insert. in this code i wrote a double link-list and i wan't to solve it with this structer

Question link: http://ift.tt/2AqN297

#include <iostream>
#include <string>
using namespace std;
const int MAXN = 1e6 + 100;

struct LinkedList {
char ar[MAXN];
int next[MAXN], prev[MAXN];
int n = 0, s = 0, e = 0;
int pointer = 0;

void changepointer(char i)
{
    if (i == 'R')
    {
        if (pointer == n - 1 && n > 0)
            pointer = pointer;
        else
            pointer = next[pointer];
    }
    if (i == 'L')
    {
        if (pointer == s && n > 0)
            pointer = -1;
        else if (pointer != -1)
            pointer = prev[pointer];
    }
}

void inser(char l)
{
    if (pointer == -1)
    {
        ar[n] = l;
        next[n] = s;
        prev[s] = n;
        s = n;
        pointer = s;
        n++;
    }
    else if (pointer == n + 1)
    {
        ar[n] = l;
        next[e] = n;
        prev[n] = e;
        e = n;
        pointer = e;
        n++;
    }
    else
    {
        ar[n] = l;
        prev[n] = pointer;
        next[n] = next[pointer];
        prev[next[pointer]] = n;
        next[pointer] = n;
        n++;
        changepointer('R');
    }
}

void cot()
{
    int pot = s;
    for (int i = 0; i < n; i++)
    {
        cout << ar[pot];
        pot = next[pot];
    }
}

};
string a;
LinkedList text;
int main()
{
cin >> a;
for (int i = 0; i < a.size(); i++)
{
    if (a[i] == 'R' || a[i] == 'L')
        text.changepointer(a[i]);
    else
        text.inser(a[i]);
}
text.cot();
}

Aucun commentaire:

Enregistrer un commentaire