Submission #358642

#TimeUsernameProblemLanguageResultExecution timeMemory
358642daniel920712Crayfish scrivener (IOI12_scrivener)C++14
0 / 100
458 ms262144 KiB
#include <stack>
#include <vector>
using namespace std;
char last;
int now=0;
int how=0;
int ok=0,N=0;

vector < char > tt;
vector < pair < int , int > > all;
pair < int , int > con[30][1000005];
void Init()
{
    int i,j;
    for(i=0;i<=25;i++) for(j=0;j<=1000000;j++) con[i][j]=make_pair(0,0);
}

void TypeLetter(char L)
{
    int i;
    now++;
    tt.push_back(L);
    N++;

    con[0][now]=make_pair(now-1,1);
    for(i=1;i<=30;i++)
    {
        con[i][now].first=con[i-1][con[i-1][now].first].first;
        con[i][now].second=con[i-1][con[i-1][now].first].second+con[i-1][now].second;
    }

}

void UndoCommands(int U)
{
    int i;
    now++;
    tt.push_back('0');
    con[0][now]=make_pair(now-U,0);
    for(i=1;i<=30;i++)
    {
        con[i][now].first=con[i-1][con[i-1][now].first].first;
        con[i][now].second=con[i-1][con[i-1][now].first].second+con[i-1][now].second;
    }


}

char GetLetter(int P)
{
    int t=now,M=0,i;
    for(i=25;i>=0;i--)
    {
        if(M+con[i][t].second<N-P)
        {
            M+=con[i][t].second;
            t=con[i][t].first;
        }
    }

    return tt[t-1];

}

Compilation message (stderr)

scrivener.cpp: In function 'void TypeLetter(char)':
scrivener.cpp:28:26: warning: iteration 29 invokes undefined behavior [-Waggressive-loop-optimizations]
   28 |         con[i][now].first=con[i-1][con[i-1][now].first].first;
      |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scrivener.cpp:26:14: note: within this loop
   26 |     for(i=1;i<=30;i++)
      |             ~^~~~
scrivener.cpp: In function 'void UndoCommands(int)':
scrivener.cpp:42:26: warning: iteration 29 invokes undefined behavior [-Waggressive-loop-optimizations]
   42 |         con[i][now].first=con[i-1][con[i-1][now].first].first;
      |         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scrivener.cpp:40:14: note: within this loop
   40 |     for(i=1;i<=30;i++)
      |             ~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...