Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.15 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <limits.h>
  4.  
  5. long long INF = LONG_LONG_MAX;
  6. int n, m, nS, nD, visited[10], taken[10], k[6][16], k_num;
  7. long long wS, wD, weights[10], answer;
  8.  
  9. long long min(long long a, long long b) {
  10. return ((a < b) ? a : b);
  11. }
  12.  
  13. void recursive(int x, int nS, int nD) {
  14. if(x == m) {
  15. long long result = 0;
  16. for(int i = 0; i < n; ++i) {
  17. memset(taken, 0, sizeof(taken));
  18. for(int j = 1; j <= k[i][0]; ++j) {
  19. if(!taken[visited[k[i][j]]]) {
  20. result += weights[visited[k[i][j]]];
  21. taken[visited[k[i][j]]] = 1;
  22. }
  23. }
  24. }
  25. answer = min(answer, result);
  26. return;
  27. }
  28. if(visited[x]) {
  29. recursive(x + 1, nS, nD);
  30. } else {
  31. if(nS) {
  32. ++k_num;
  33. weights[k_num] = wS;
  34. visited[x] = k_num;
  35. recursive(x + 1, nS - 1, nD);
  36. visited[x] = 0;
  37. --k_num;
  38. }
  39. if(nD) {
  40. for(int i = x + 1; i < m; ++i) {
  41. if(!visited[i]) {
  42. ++k_num;
  43. weights[k_num] = wD;
  44. visited[x] = visited[i] = k_num;
  45. recursive(x + 1, nS, nD - 1);
  46. --k_num;
  47. visited[i] = visited[x] = 0;
  48. }
  49. }
  50. }
  51. }
  52. }
  53. #include <stdio.h>
  54. #include <string.h>
  55.  
  56. #define MAX_LENGTH 6
  57. #define MAX_NUMBER 999999
  58.  
  59. typedef struct Relation {
  60. int Left, Right;
  61. char Sign[3];
  62. } Relation;
  63.  
  64. void ConvertNumberToSTR(int Number, char* Result) {
  65. if(Number > ((int)MAX_NUMBER / 10)) {
  66. sprintf(Result, "%i\0", Number);
  67. return;
  68. }
  69. char str[MAX_LENGTH];
  70. sprintf(str, "%i\0", Number);
  71. int index = 0;
  72. for(int i = 0; i < MAX_LENGTH - strlen(str); ++i) {
  73. Result[index] = '0';
  74. ++index;
  75. }
  76. for(int i = 0; i < strlen(str); ++i) {
  77. Result[index] = str[i];
  78. ++index;
  79. }
  80. Result[index] = '\0';
  81. }
  82.  
  83. int main() {
  84. FILE* input = fopen("input.txt", "r");
  85. char Line[4];
  86. int ArraySize = 0;
  87. Relation Array[30];
  88. while(fscanf(input, "%s", Line) != EOF) {
  89. Array[ArraySize].Left = Line[0] - '1';
  90. if(strlen(Line) == 3) {
  91. Array[ArraySize].Right = Line[2] - '1';
  92. Array[ArraySize].Sign[0] = Line[1];
  93. Array[ArraySize].Sign[1] = '\0';
  94. } else {
  95. Array[ArraySize].Right = Line[3] - '1';
  96. Array[ArraySize].Sign[0]= Line[1];
  97. Array[ArraySize].Sign[1]= Line[2];
  98. Array[ArraySize].Sign[2]= '\0';
  99. }
  100. ++ArraySize;
  101. }
  102. fclose(input);
  103. char STRNumber[6];
  104. int IsProper;
  105. int Result = 0;
  106. for(int i = 0; i <= MAX_NUMBER; ++i) {
  107. ConvertNumberToSTR(i, STRNumber);
  108. IsProper = 1;
  109. for(int j = 0; j <= ArraySize; ++j) {
  110. if(Array[j].Sign[0] == '>' && Array[j].Sign[1] == '=') {
  111. IsProper = (STRNumber[Array[j].Left] >= STRNumber[Array[j].Right] ? 1 : 0);
  112. } else if(Array[j].Sign[0] == '<' && Array[j].Sign[1] == '=') {
  113. IsProper = (STRNumber[Array[j].Left] <= STRNumber[Array[j].Right] ? 1 : 0);
  114. } else if(Array[j].Sign[0] == '<' && Array[j].Sign[1] == '>') {
  115. IsProper = (STRNumber[Array[j].Left] != STRNumber[Array[j].Right] ? 1 : 0);
  116. } else if(Array[j].Sign[0] == '>') {
  117. IsProper = (STRNumber[Array[j].Left] > STRNumber[Array[j].Right] ? 1 : 0);
  118. } else if(Array[j].Sign[0] == '<') {
  119. IsProper = (STRNumber[Array[j].Left] < STRNumber[Array[j].Right] ? 1 : 0);
  120. } else if(Array[j].Sign[0] == '=') {
  121. IsProper = (STRNumber[Array[j].Left] == STRNumber[Array[j].Right] ? 1 : 0);
  122. }
  123. if(IsProper == 0) {
  124. break;
  125. }
  126. }
  127. if(IsProper == 1) {
  128. ++Result;
  129. }
  130. }
  131. FILE* output = fopen("output.txt", "w");
  132. fprintf(output, "%i\0", Result);
  133. fclose(output);
  134. return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement