Submission #574320

#TimeUsernameProblemLanguageResultExecution timeMemory
574320keta_tsimakuridzeCrayfish scrivener (IOI12_scrivener)C++14
0 / 100
382 ms76784 KiB
#include<bits/stdc++.h>
#define prev Prev
using namespace std;
const int N = 1000005;
int id, c[N][25], prev[N], len[N];
vector<char> s;
void Init() {
	s.push_back('0');
}
void TypeLetter(char L) {
	id++;
	c[id][0] = id;
	s.push_back(L);
	len[id] = len[id - 1] + 1;
	prev[id] = c[id - 1][0];
	for(int i = 1;  i < 20; i++) {
		if(id < (1 << i)) break;
		c[id][i] = c[prev[c[id][i - 1]]][i - 1];
	}
}
void UndoCommands(int U) {
	++id; s.push_back('0');
	int x = id - U - 1;
	len[id] = len[x];
	for(int i = 0; i < 20; i++) c[id][i] = c[x][i]; 
}
char GetLetter(int P) {
	int x = c[id][0];
	P = len[id] - P;
	for(int i = 20 - 1; i >= 0; i--) {
		if((1 << i) < P) x = prev[c[id][i]], P -= 1 << i; 
	}
	return s[c[id][0]];
}
/*
int main() {
  Init();

  int cmd_num;
  int tmp = scanf("%d", &cmd_num);
  assert(tmp == 1);

  int i;
  for (i = 0; i < cmd_num; i++) {
    char cmd;
    tmp = scanf(" %c", &cmd);
    assert(tmp == 1);
    if (cmd == 'T') {
      char letter;
      tmp = scanf(" %c", &letter);
      assert(tmp == 1);
      TypeLetter(letter);
    }
    else if (cmd == 'U') {
      int number;
      tmp = scanf("%d", &number);
      assert(tmp == 1);
      UndoCommands(number);
    }
    else if (cmd == 'P') {
      int index;
      char letter;
      tmp = scanf("%d", &index);
      assert(tmp == 1);
      letter = GetLetter(index);
      printf("%c\n", letter);
    }
  }
  
  puts("Let's test for cheating!!");

  return 0;

}
*/

Compilation message (stderr)

scrivener.cpp: In function 'char GetLetter(int)':
scrivener.cpp:28:6: warning: variable 'x' set but not used [-Wunused-but-set-variable]
   28 |  int x = c[id][0];
      |      ^
#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...