UVa 10881 Piotr's Ants ——思路题
#include #include #include #include using namespace std;const int maxn = 10000 + 5;const char dirName[][10] = {"L", "Turning", "R"};struct Art { int id, pos, sta; bool operator < (const Art &a) const { return pos < a.pos; }}a1[maxn], a2[maxn];int order[maxn];int main(){ int k; scanf("%d", &k); for (int kase = 1; kase <= k; kase++) { int L, T, n; printf("Case #%d:\n", kase); scanf("%d %d %d", &L, &T, &n); for (int i = 0; i < n; i++) { int pos, sta; char c; scanf("%d %c", &pos, &c); sta = (c == 'L' ? -1 : 1); a1[i] = (Art){i, pos, sta}; a2[i] = (Art){0, pos + T * sta, sta}; } sort(a1, a1 + n); for (int i = 0; i < n; i++) order[a1[i].id] = i; sort(a2, a2 + n); for (int i = 0; i < n - 1; i++) { if (a2[i].pos == a2[i + 1].pos) a2[i].sta = a2[i + 1].sta = 0; } for (int i = 0; i < n; i++) { int a = order[i]; if (a2[a].pos < 0 || a2[a].pos > L) printf("Fell off\n"); else printf("%d %s\n", a2[a].pos, dirName[a2[a].sta + 1]); } printf("\n"); } return 0;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。