Submission #958573

# Submission time Handle Problem Language Result Execution time Memory
958573 2024-04-06T04:35:46 Z PoPularPlusPlus Crayfish scrivener (IOI12_scrivener) C++17
34 / 100
1000 ms 171204 KB
#include <bits/stdc++.h>
using namespace std;
#define pb(x) push_back(x)
#define mp(x,y) make_pair(x,y)
#define vf first 
#define vs second

const int N = 1000005;
const int L = 19;
vector<char> v[N];
vector<pair<int,int>> val;
vector<vector<pair<int,int>>> up[N];

void Init(){
	val.pb(mp(-1,0));
}

void TypeLetter(char c){
	int pos = val.back().vf + 1;
	pair<int,int> cur = val.back();
	v[pos].pb(c);
	val.pb(mp(pos , v[pos].size()-1));
	vector<pair<int,int>> x;
	x.pb(cur);
	for(int i = 1; i < L; i++){
		if(cur.vf == -1){
			x.pb(mp(-1,0));
		}
		else {
			x.pb(up[cur.vf][cur.vs][i-1]);
			cur = up[cur.vf][cur.vs][i-1];
		}
	}
	up[pos].pb(x);
}

void UndoCommands(int u){
	val.pb(val[val.size()-u-1]);
}

char GetLetter(int p){
	pair<int,int> cur = val.back();
	for(int i = L-1; i > 0; i--){
		if(up[cur.vf][cur.vs][i-1].vf > p){
			cur = up[cur.vf][cur.vs][i-1];
		}
	}
	if(p!=cur.vf)cur = up[cur.vf][cur.vs][0];
	//cout << cur.vf << ' ' << cur.vs << endl;
	return v[cur.vf][cur.vs];
}
/*
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;

}
*/
# Verdict Execution time Memory Grader output
1 Correct 19 ms 47192 KB Output is correct
2 Correct 12 ms 47196 KB Output is correct
3 Correct 13 ms 47320 KB Output is correct
4 Correct 12 ms 47196 KB Output is correct
5 Correct 12 ms 47420 KB Output is correct
6 Correct 12 ms 47420 KB Output is correct
7 Correct 12 ms 47192 KB Output is correct
8 Correct 14 ms 47196 KB Output is correct
9 Correct 13 ms 47356 KB Output is correct
10 Correct 14 ms 47388 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 47192 KB Output is correct
2 Correct 12 ms 47196 KB Output is correct
3 Correct 12 ms 47192 KB Output is correct
4 Correct 13 ms 47196 KB Output is correct
5 Correct 12 ms 47400 KB Output is correct
6 Correct 12 ms 47416 KB Output is correct
7 Correct 13 ms 47196 KB Output is correct
8 Correct 12 ms 47372 KB Output is correct
9 Correct 15 ms 47412 KB Output is correct
10 Correct 12 ms 47384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 47708 KB Output is correct
2 Correct 13 ms 47708 KB Output is correct
3 Correct 13 ms 47704 KB Output is correct
4 Correct 14 ms 48036 KB Output is correct
5 Correct 14 ms 47788 KB Output is correct
6 Correct 14 ms 47964 KB Output is correct
7 Correct 18 ms 47960 KB Output is correct
8 Correct 14 ms 47964 KB Output is correct
9 Correct 14 ms 48084 KB Output is correct
10 Correct 13 ms 47708 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1065 ms 171204 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1067 ms 146584 KB Time limit exceeded
2 Halted 0 ms 0 KB -