Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3.  
  4. using namespace std;
  5.  
  6. bool hasHappened(string e, string events[], int a, int& found) {
  7. for ( ; a >= 0; a--) {
  8. if (e == events[a]) {
  9. found = a;
  10. return true;
  11. }
  12. }
  13. return false;
  14. }
  15.  
  16. bool consistent(int sEvents, int events, string S[], string E[], int dreamed, int& found) {
  17. for (int i = 0; i < sEvents; i++) {
  18. string ev = S[i];
  19. bool invert = false;
  20. if (ev[0] == '!') {
  21. invert = true;
  22. ev.erase(0, 1);
  23. }
  24. bool h = hasHappened(ev, E, events-dreamed, found);
  25. if ((!h && !invert) || (h && invert))
  26. return false;
  27. }
  28. return true;
  29. }
  30.  
  31. int main (int argc, char * const argv[]) {
  32. ios::sync_with_stdio(false);
  33. cin.tie(NULL);
  34. int a;
  35. char type;
  36. cin >> a;
  37. string event[a];
  38. int eventC = -1;
  39. for ( ; a > 0; a--) {
  40. cin >> type;
  41. if (type == 'E') {
  42. eventC++;
  43. cin >> event[eventC];
  44. }
  45. else if (type == 'S') {
  46. int b = 0;
  47. cin >> b;
  48. string events[b];
  49. for (int i = 0; i < b; i++)
  50. cin >> events[i];
  51. int found;
  52. if (consistent(b, eventC, events, event, 0, found)) {
  53. printf("Yes\n");
  54. }
  55. else {
  56. bool foundDream = false;
  57. for (int i = 1; i <= eventC + 1; i++) {
  58. if (i > eventC-found) {
  59. if (consistent(b, eventC, events, event, i, found)) {
  60. printf("%d Just A Dream\n", i);
  61. foundDream = true;
  62. break;
  63. }
  64. }
  65. }
  66. if (!foundDream) {
  67. printf("Plot Error\n");
  68. }
  69. }
  70. }
  71. else {
  72. int c = 0;
  73. cin >> c;
  74. eventC -= c;
  75. }
  76. }
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement