#include <bits/stdc++.h> using namespace std; using ll = long long; deque<pair<int,int>> snake; bool moveSnake(int dir) { // TODO: 请实现移动逻辑 for(int i=0;i<snake.size()-1;i++){ snake[i].first=snake[i+1].first; snake[i].second=snake[i+1].second; } switch (dir) { case 1: snake.back().second++; break; case 2: snake.back().second--; break; case 3: snake.back().first--; break; case 4: snake.back().first++; break; } for(int i=0;i<snake.size()-1;i++){ if(snake[i].first==snake.back().first&&snake[i].second==snake.back().second){ return true; } } return false; } bool eatSnake(int dir) { // TODO: 请实现吃果子生长逻辑 int x=snake.front().first; int y=snake.front().second; for(int i=0;i<snake.size()-1;i++){ snake[i].first=snake[i+1].first; snake[i].second=snake[i+1].second; } switch (dir) { case 1: snake.back().second++; break; case 2: snake.back().second--; break; case 3: snake.back().first--; break; case 4: snake.back().first++; break; } snake.insert(snake.begin(),{x,y}); for(int i=0;i<snake.size()-1;i++){ if(snake[i].first==snake.back().first&&snake[i].second==snake.back().second){ return true; } } return false; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, q; cin >> n >> q; snake.clear(); for (int i = 0; i < n; i++) { int x, y; cin >> x >> y; snake.emplace_back(x, y); } for (int i = 0; i < q; i++) { int op, dir; cin >> op >> dir; bool collision = (op == 1 ? moveSnake(dir) : eatSnake(dir)); if (collision) { cout << -1 << '\n'; return 0; } else { for (auto it = snake.rbegin(); it != snake.rend(); ++it) { cout << it->first << ' ' << it->second << '\n'; } } } return 0; }
不知道为什么放在哈希表这一块