#include #include #include typedef struct point{ int x; int y; } point; typedef struct groov{ point start; point end; } groov; typedef struct hunter{ point start; point position; } hunter; void step(std::vector &hunters, groov new_groov, int size) { //size_t size = hunters.size(); for (int i = 1; i <= size; i++) { // printf("s: %d - %d\n", hunters[i].start.x, hunters[i].start.y); // printf("p: %d - %d\n", hunters[i].position.x, hunters[i].position.y); hunters[i].position.y = hunters[i].position.y + 1; if (hunters[i].position.x == new_groov.start.x) { int tmp = hunters[i].position.x; hunters[i].position.x = new_groov.end.x; for (int j = 1; j <= size; j++) { if (hunters[j].position.x == new_groov.end.x && i != j) { hunters[j].position.x = tmp; hunters[j].position.y = hunters[j].position.y + 1; } } // hunters[new_groov.end.x].position.x = tmp; // hunters[new_groov.end.x].position.y = hunters[new_groov.end.x].position.y + 1; //printf("%d %d\n", new_groov.end.x, hunters[new_groov.end.x].position.x); break; } else if (hunters[i].position.x == new_groov.end.x) { int tmp = hunters[i].position.x; hunters[i].position.x = new_groov.start.x; for (int j = 1; j <= size; j++) { if (hunters[j].position.x == new_groov.start.x && i != j) { hunters[j].position.x = tmp; hunters[j].position.y = hunters[j].position.y + 1; } } //printf("%d %d\n", new_groov.start.x, hunters[new_groov.end.x].position.x); break; } } } int main() { int hunters_count; int grooves; scanf(" %d", &hunters_count); scanf(" %d", &grooves); std::vector all_groovs; int max = 0; for (int i = 0; i < grooves; i++) { groov new_groov; scanf(" %d %d %d %d",&new_groov.start.x, &new_groov.start.y, &new_groov.end.x, &new_groov.end.y); if (new_groov.start.y > max) max = new_groov.start.y; all_groovs.push_back(new_groov); } std::vector hunters; hunter empty; empty.start.x = 0; empty.start.y = 0; empty.position = empty.start; hunters.push_back(empty); for (int i = 1; i <= hunters_count + 1; i++) { hunter new_hunter; new_hunter.start.x = i; new_hunter.start.y = 0; new_hunter.position.x = i; new_hunter.position.y = 0; hunters.push_back(new_hunter); } for (int i = 0; i <= max; i++) { step(hunters, all_groovs[i], hunters_count); } for (int i = 1; i < hunters_count + 1; i++) { printf("%d\n", hunters[i].position.x); } }