Submission #958588

# Submission time Handle Problem Language Result Execution time Memory
958588 2024-04-06T05:19:04 Z PoPularPlusPlus Crayfish scrivener (IOI12_scrivener) C++17
0 / 100
1000 ms 262148 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 = 1000002;
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){
			break;
		}
		else if(up[cur.vf][cur.vs].size() > i-1){
			x.pb(up[cur.vf][cur.vs][i-1]);
			cur = x.back();
		}
		else break;
	}
	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 = up[cur.vf][cur.vs].size()-1; i > 0; i--){
		if(up[cur.vf][cur.vs][i].vf > p){
			cur = up[cur.vf][cur.vs][i];
		}
	}
	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;

}
*/

Compilation message

scrivener.cpp: In function 'void TypeLetter(char)':
scrivener.cpp:29:37: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   29 |   else if(up[cur.vf][cur.vs].size() > i-1){
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 21 ms 47196 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 12 ms 47196 KB Output is correct
2 Runtime error 48 ms 95568 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 13 ms 47448 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 3186 ms 262148 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 74 ms 111556 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -