Submission #2559992


Source Code Expand

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;

int N, X[3009], Y[3009]; char c[3009], p[3009][3009]; vector<int>x, y;
set<int>DX[3009], DY[3009];

void dels(int px, int py) {
	DX[px].erase(py);
	DY[py].erase(px);
}

int solve(int pos) {
	for (int i = 0; i < N; i++) { DX[i].clear(); DY[i].clear(); }
	for (int i = 1; i <= N; i++) { DX[X[i]].insert(Y[i]); DY[Y[i]].insert(X[i]); }

	int cnt = 0, vx = X[pos], vy = Y[pos]; char dir = c[pos];

	while (true) {
		dels(vx, vy); dir = p[vx][vy]; cnt++;
		if (dir == '<' || dir == '>') {
			auto itr = DX[vx].lower_bound(vy);
			if (dir == '<') {
				if (itr == DX[vx].begin()) break;
				itr--;
			}
			if (itr == DX[vx].end()) break;
			vy = *itr;
		}
		else {
			auto itr = DY[vy].lower_bound(vx);
			if (dir == '^') {
				if (itr == DY[vy].begin()) break;
				itr--;
			}
			if (itr == DY[vy].end()) break;
			vx = *itr;
		}
	}
	return cnt;
}

int main() {
	cin >> N;
	for (int i = 1; i <= N; i++) {
		cin >> X[i] >> Y[i] >> c[i]; swap(X[i], Y[i]);
		x.push_back(X[i]);
		y.push_back(Y[i]);
	}
	sort(x.begin(), x.end()); x.erase(unique(x.begin(), x.end()), x.end());
	sort(y.begin(), y.end()); y.erase(unique(y.begin(), y.end()), y.end());
	
	for (int i = 1; i <= N; i++) {
		X[i] = lower_bound(x.begin(), x.end(), X[i]) - x.begin();
		Y[i] = lower_bound(y.begin(), y.end(), Y[i]) - y.begin();
		p[X[i]][Y[i]] = c[i];
	}
	int maxn = 0;
	for (int i = 1; i <= N; i++) {
		maxn = max(maxn, solve(i));
	}
	cout << maxn << endl;
	return 0;
}

Submission Info

Submission Time
Task B - Vector Field
User E869120
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1597 Byte
Status AC
Exec Time 2230 ms
Memory 6656 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 42
Set Name Test Cases
All 00_sample_00, 00_sample_01, 10_sval_Small_00, 10_sval_Small_01, 10_sval_Small_02, 10_sval_Small_03, 10_sval_Small_04, 12_sval_Large_00, 12_sval_Large_01, 12_sval_Large_02, 12_sval_Large_03, 12_sval_Large_04, 20_lval_Small_00, 20_lval_Small_01, 20_lval_Small_02, 20_lval_Small_03, 20_lval_Small_04, 20_lval_Small_05, 20_lval_Small_06, 20_lval_Small_07, 20_lval_Small_08, 20_lval_Small_09, 22_lval_Large_00, 22_lval_Large_01, 22_lval_Large_02, 22_lval_Large_03, 22_lval_Large_04, 22_lval_Large_05, 22_lval_Large_06, 22_lval_Large_07, 22_lval_Large_08, 22_lval_Large_09, 32_NearMax_00, 32_NearMax_01, 32_NearMax_02, 32_NearMax_03, 32_NearMax_04, 32_NearMax_05, 32_NearMax_06, 32_NearMax_07, 32_NearMax_08, 32_NearMax_09
Case Name Status Exec Time Memory
00_sample_00 AC 1 ms 512 KB
00_sample_01 AC 1 ms 512 KB
10_sval_Small_00 AC 1 ms 512 KB
10_sval_Small_01 AC 1 ms 512 KB
10_sval_Small_02 AC 1 ms 512 KB
10_sval_Small_03 AC 1 ms 512 KB
10_sval_Small_04 AC 1 ms 512 KB
12_sval_Large_00 AC 373 ms 1920 KB
12_sval_Large_01 AC 661 ms 1920 KB
12_sval_Large_02 AC 343 ms 1920 KB
12_sval_Large_03 AC 808 ms 1920 KB
12_sval_Large_04 AC 698 ms 1920 KB
20_lval_Small_00 AC 1 ms 512 KB
20_lval_Small_01 AC 1 ms 512 KB
20_lval_Small_02 AC 1 ms 512 KB
20_lval_Small_03 AC 1 ms 512 KB
20_lval_Small_04 AC 1 ms 512 KB
20_lval_Small_05 AC 1 ms 512 KB
20_lval_Small_06 AC 1 ms 512 KB
20_lval_Small_07 AC 1 ms 512 KB
20_lval_Small_08 AC 1 ms 512 KB
20_lval_Small_09 AC 1 ms 512 KB
22_lval_Large_00 AC 1179 ms 2048 KB
22_lval_Large_01 AC 370 ms 1920 KB
22_lval_Large_02 AC 340 ms 1920 KB
22_lval_Large_03 AC 535 ms 1920 KB
22_lval_Large_04 AC 389 ms 1920 KB
22_lval_Large_05 AC 704 ms 1920 KB
22_lval_Large_06 AC 1313 ms 2048 KB
22_lval_Large_07 AC 882 ms 1920 KB
22_lval_Large_08 AC 418 ms 1920 KB
22_lval_Large_09 AC 1178 ms 2048 KB
32_NearMax_00 AC 1941 ms 6656 KB
32_NearMax_01 AC 1792 ms 6656 KB
32_NearMax_02 AC 1906 ms 6656 KB
32_NearMax_03 AC 2114 ms 6656 KB
32_NearMax_04 AC 2118 ms 6656 KB
32_NearMax_05 AC 1892 ms 6656 KB
32_NearMax_06 AC 2230 ms 6656 KB
32_NearMax_07 AC 2110 ms 6656 KB
32_NearMax_08 AC 1932 ms 6656 KB
32_NearMax_09 AC 1985 ms 6656 KB