QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#381614#3058. Assignment AlgorithmI_Love_Sonechka#WA 1ms3872kbC++142.3kb2024-04-07 19:19:282024-04-07 19:19:28

Judging History

你现在查看的是最新测评结果

  • [2024-04-07 19:19:28]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3872kb
  • [2024-04-07 19:19:28]
  • 提交

answer

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

// c++ short types
#define Int long long
#define vt vector

void solver() {
	int r, n; cin >> r >> n;
	int cnt_leftside = 0, cnt_rightside = 0;
	vt<string> a(r+4);
	string temp = "ABC.DEF.GHI", leftside = "ABCD", rightside="FGHI";
	vt<string> order = {"DF", "CG", "AI", "E", "BH"};
	vt<int> exit_rows = {1, r/2 + 2, r + 3};
	vt<int> free(r+4, 9);
	for(int i = 1; i <= r+3; ++i) {
		cin >> a[i];
		if(find(exit_rows.begin(), exit_rows.end(), i) == exit_rows.end()) {
			for(int j = 0; j < a[i].size(); ++j) if(a[i][j] == '#') {
				free[i] --;
				cnt_leftside += leftside.find(temp[j]) != string::npos;
				cnt_rightside += rightside.find(temp[j]) != string::npos;
			}
		}
	}
	for(int i = 0; i < n; ++i) {
		vt<int> rows = {};
		for(int k = 1; k <= r + 3; ++k) {
			if(find(exit_rows.begin(), exit_rows.end(), k) == exit_rows.end() && free[k]) {
				rows.push_back(k);
			}
		}
		auto Get = [&](int i) -> vt<int> {
			int dist = r + 3;
			for(int j : exit_rows) {
				dist = min(dist, abs(j-i));
			}
			for(int j: exit_rows) {
				if(i == j + 1) {
					return {-(int)1e9 - free[i],  dist, i};
				}
			}
			return {-free[i], dist, i};
		};
		sort(rows.begin(), rows.end(), [&](int l, int r) {
				return Get(l) < Get(r);
		});
		int id = rows[0];
		vt<int> poses;
		for(int j = 0; j < temp.size(); ++j) if(temp[j] != '.' && a[id][j] == '-') {
			poses.push_back(j);
		}
		auto Get2 = [&](int k) -> vt<int> {
			char c = temp[k];
			for(int j = 0; j < order.size(); ++j) {
				for(auto ch: order[j]) {
					if(ch == c) {
						int cnt = leftside.find(ch) != string::npos ? cnt_leftside : cnt_rightside; 
						return {j, cnt, +ch-'A'};
					}
				}
			}
			return {-1, -1};
		};
		sort(poses.begin(), poses.end(), [&](int l, int r) {
				return Get2(l) < Get2(r);
		});
		int pos = poses[0];
		char c = temp[pos];
		if(leftside.find(c) != string::npos) {
			cnt_leftside++;
		} else if(rightside.find(c) != string::npos) {
			cnt_rightside++;
		}
		free[id] --;
		a[id][pos] = i + 'a';
	}
	for(auto s: a) {
		cout << s << endl;
	}
}

int main()
{
	//ios::sync_with_stdio(false); cin.tie(nullptr);
	int tt = 1;
	for(int t = 0; t < tt; ++t) {
    solver();
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3872kb

input:

2 17
...........
---.#--.---
...........
---.---.---
...........

output:


...........
hnd.#lb.fpj
...........
kqg.cma.eoi
...........

result:

wrong answer 1st lines differ - expected: '...........', found: ''