fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. const int MAX = 100000;
  7.  
  8. int M, N, Q, i, h;
  9. char t;
  10. long long a[MAX], b[MAX], index[MAX];
  11. vector<vector<long long>> v;
  12.  
  13. void inizia(long long N, long long M) {
  14. v.resize(M);
  15. v[0].resize(N);
  16. for (long long j = 0; j < N; j++) v[0][j] = j;
  17. index[0] = N;
  18. for (long long j = 1; j < M; j++) index[j] = 0;
  19. }
  20.  
  21. void sposta(long long a, long long b) {
  22. v[b].resize(index[b] + 1);
  23. v[b][index[b]] = v[a][index[a] - 1];
  24. index[a] = index[a] - 1;
  25. index[b] = index[b] + 1;
  26. }
  27.  
  28. long long controlla(long long a, long long i) {
  29. if (index[a] + 1 <= i) return -1;
  30. else return v[a][i];
  31. }
  32.  
  33. int main() {
  34. // Uncomment the following lines if you want to read/write from file
  35. // freopen("input.txt", "r", stdin);
  36. // freopen("output.txt", "w", stdout);
  37.  
  38. cin >> N >> M >> Q;
  39.  
  40. inizia(N, M);
  41.  
  42. for (int i = 0; i < Q; i++) {
  43. char t;
  44. int a, b;
  45. cin >> t >> a >> b;
  46. if (t == 's') {
  47. sposta(a, b);
  48. } else {
  49. cout << controlla(a, b) << '\n';
  50. }
  51. }
  52.  
  53. return 0;
  54. }
  55.  
Success #stdin #stdout 0.01s 5288KB
stdin
5 6 7
s 0 1
c 1 0
s 0 2
s 1 2
s 0 2
c 2 2
c 2 1
stdout
4
2
4