求助,样例都过了,但是20个测试点一个没过
查看原帖
求助,样例都过了,但是20个测试点一个没过
759274
Stevehim楼主2022/10/6 21:42

RT,可以说非常之惨烈...

#include <bits/stdc++.h>
using namespace std;

struct person {
	int left;
	int right;
	string name;
	int turn;
} a[1145];
int n, m;

int main() {
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		cin >> a[i].turn >> a[i].name;
//		cout << a[i].name << endl;
		if (a[i].turn == 1) {
			a[i].left = i + 1;
			a[i].right = i - 1;
			if (i == 0) {
				a[i].right = n - 1;
			}
			if (i == n - 1) {
				a[i].left = 0;
			}
		} else if (a[i].turn == 0) {
			a[i].left = i - 1;
			a[i].right = i + 1;
			if (i == n - 1) {
				a[i].right = 0;
			}
			if (i == 0) {
				a[i].left = n - 1;
			}
		}
	}

	int turn, num;
	string temp;
	int cur = 0;
	for (int i = 0; i < m; i++) {
		cin >> turn >> num;
//		printf("turn:%d,num:%d,cur:%d\n", turn, num, cur);
		if (turn == 0) {
			if (a[cur].turn == 1) { //朝外
				cur = a[cur].left;
				cur += num;
				temp = a[cur].name;
			} else {
				cur = a[cur].left;
				cur += n - num;
				temp = a[cur].name;
			}
//			cout << temp << endl;
		} else if (turn == 1) {
			if (a[cur].turn == 0) { //朝内
				cur = a[cur].right;
				cur += num;
				temp = a[cur].name;
			} else {
				cur = a[cur].right;
				cur += n - num;
				temp = a[cur].name;
			}
//			cout << temp << endl;
		}
	}
	cout << temp;
	return 0;
}

2022/10/6 21:42
加载中...