这是我第二次用另一种方法问这道题
rt 复习提单 写了一遍这题 比上次写的简洁了很多 但是WA了#8 数据有800多行 一步步调怕是要出人命的,求助大佬/kel
最后输出cur是调试用 错的那个点cur=0(我是1开始下标 按理不应该出现0)
#include <iostream>
#include <cstdio>
std::string taskplace[100010];
int a[100010];
void turn_add(int &cur, int n, int ny) {
cur = (cur + ny) % n;
}
void turn_minu(int &cur, int n, int ny) {
cur = (((cur - ny) > 0) ? cur - ny : ((cur + (n - ny) % n)));
}
int main() {
int n, m, cur = 1;
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
std::cin >> taskplace[i];
}
for(int i = 1; i <= m; i++) {
int lr, ny;
scanf("%d %d", &lr, &ny);
if(lr == 0 && a[cur] == 0) {
turn_minu(cur, n, ny);
} else if(lr == 0 && a[cur] == 1) {
turn_add(cur, n, ny);
} else if(lr == 1 && a[cur] == 0) {
turn_add(cur, n, ny);
} else if(lr == 1 && a[cur] == 1) {
turn_minu(cur, n, ny);
}
}
printf("%d %s\n", cur, taskplace[cur].c_str());
return 0;
}