AtCoder Beginner Contest 009

Submission #1589198

Source codeソースコード

#include "bits/stdc++.h"
#include <regex>
#define _USE_MATH_DEFINES
#include <math.h>

using namespace std;

#ifndef _DEBUG
#define main_ main
#endif
#define FOR(i,s,e) for (int i = int(s); i < int(e); ++i)
#define REP(i,e) FOR(i,0,e)
#define INF (INT_MAX/2)
#define EPS (1.0e-8)
#define LINF (LONG_MAX/2)

typedef long long ll;
typedef unsigned long long ull;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<bool> vb;
typedef vector<string> vs;

template <typename T>
using keyVal = pair<string, T>;
template<typename T>
bool val_greater(const keyVal<T>& left, const keyVal<T>& right) {
	return left.second > right.second;
}

vs split(string str, char sep) {
	stringstream ss(str); string t; vs v;
	while (getline(ss, t, sep)) v.push_back(t);
	return v;
}

void init_global() {}

int N, K;
string S, A;
vb usedS, usedA;

int match(string A, string S) {
	vb tmpUsedS = usedS;
	int cnt = 0;

	FOR(i, 0, N) {
		if (usedA[i]) continue;
		FOR(j, 0, N) {
			if (tmpUsedS[j]) continue;
			if (A[i] == S[j]) {
				cnt++;
				tmpUsedS[j] = true;
				break;
			}
		}
	}
	return cnt;
}

void dfs(int i, string s, int lim, string& ans) {
	if (i == N) {
		ans = s;
		return;
	}

	usedS[i] = true;

	FOR(j, 0, N) {
		if (usedA[j])continue;
		usedA[j] = true;

		if (S[i] == A[j]) {
			dfs(i + 1, s + A[j], lim, ans);
		}
		else {
			int dif = N - (i+1) - match(A, S);
			if (dif <= lim - 1) {
				dfs(i + 1, s + A[j], lim - 1, ans);
				return;
			}
			else {
				usedA[j] = false;
			}
		}
	}

	usedS[i] = false;
}

int main_() {
	cin.tie(0);
	ios::sync_with_stdio(false);

	cin >> N >> K;
	cin >> S;

	A = S;
	sort(A.begin(), A.end());

	usedS.resize(N, false);
	usedA.resize(N, false);
	string ans;
	dfs(0, "", K, ans);

	cout << ans << endl;

	usedS.clear();
	usedA.clear();

	return 0;
}

Submission

Task問題 C - 辞書式順序ふたたび
User nameユーザ名 apprec
Created time投稿日時
Language言語 C++14 (GCC 5.4.1)
Status状態 AC
Score得点 100
Source lengthソースコード長 2012 Byte
File nameファイル名
Exec time実行時間 27 ms
Memory usageメモリ使用量 256 KB

Test case

Set

Set name Score得点 / Max score Cases
All 100 / 100 hand_1_0.txt,hand_1_1.txt,hand_1_2.txt,hand_1_3.txt,hand_1_4.txt,hand_1_5.txt,hand_1_6.txt,hand_1_7.txt,hand_1_8.txt,hand_2_0.txt,hand_2_1.txt,hand_2_10.txt,hand_2_2.txt,hand_2_3.txt,hand_2_4.txt,hand_2_5.txt,hand_2_6.txt,hand_2_7.txt,hand_2_8.txt,hand_2_9.txt,hand_3_2.txt,hand_3_3.txt,hand_3_4.txt,hand_3_5.txt,hand_3_6.txt,hand_4_2.txt,hand_4_3.txt,hand_4_4.txt,hand_4_5.txt,hand_4_6.txt,random_1.txt,random_10.txt,random_11.txt,random_12.txt,random_13.txt,random_14.txt,random_15.txt,random_2.txt,random_3.txt,random_4.txt,random_5.txt,random_6.txt,random_7.txt,random_8.txt,random_9.txt,sample_1.txt,sample_2.txt,sample_3.txt,sample_4.txt,small_1.txt,small_2.txt,small_3.txt,small_4.txt,small_5.txt,small_6.txt,small_7.txt,small_8.txt,small_9.txt

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
hand_1_0.txt AC 1 ms 256 KB
hand_1_1.txt AC 1 ms 256 KB
hand_1_2.txt AC 1 ms 256 KB
hand_1_3.txt AC 1 ms 256 KB
hand_1_4.txt AC 1 ms 256 KB
hand_1_5.txt AC 1 ms 256 KB
hand_1_6.txt AC 1 ms 256 KB
hand_1_7.txt AC 1 ms 256 KB
hand_1_8.txt AC 1 ms 256 KB
hand_2_0.txt AC 1 ms 256 KB
hand_2_1.txt AC 1 ms 256 KB
hand_2_10.txt AC 1 ms 256 KB
hand_2_2.txt AC 1 ms 256 KB
hand_2_3.txt AC 1 ms 256 KB
hand_2_4.txt AC 1 ms 256 KB
hand_2_5.txt AC 1 ms 256 KB
hand_2_6.txt AC 1 ms 256 KB
hand_2_7.txt AC 1 ms 256 KB
hand_2_8.txt AC 1 ms 256 KB
hand_2_9.txt AC 1 ms 256 KB
hand_3_2.txt AC 1 ms 256 KB
hand_3_3.txt AC 1 ms 256 KB
hand_3_4.txt AC 1 ms 256 KB
hand_3_5.txt AC 1 ms 256 KB
hand_3_6.txt AC 1 ms 256 KB
hand_4_2.txt AC 1 ms 256 KB
hand_4_3.txt AC 1 ms 256 KB
hand_4_4.txt AC 1 ms 256 KB
hand_4_5.txt AC 1 ms 256 KB
hand_4_6.txt AC 1 ms 256 KB
random_1.txt AC 2 ms 256 KB
random_10.txt AC 22 ms 256 KB
random_11.txt AC 14 ms 256 KB
random_12.txt AC 16 ms 256 KB
random_13.txt AC 10 ms 256 KB
random_14.txt AC 3 ms 256 KB
random_15.txt AC 2 ms 256 KB
random_2.txt AC 2 ms 256 KB
random_3.txt AC 2 ms 256 KB
random_4.txt AC 4 ms 256 KB
random_5.txt AC 2 ms 256 KB
random_6.txt AC 6 ms 256 KB
random_7.txt AC 21 ms 256 KB
random_8.txt AC 27 ms 256 KB
random_9.txt AC 26 ms 256 KB
sample_1.txt AC 1 ms 256 KB
sample_2.txt AC 1 ms 256 KB
sample_3.txt AC 1 ms 256 KB
sample_4.txt AC 1 ms 256 KB
small_1.txt AC 1 ms 256 KB
small_2.txt AC 1 ms 256 KB
small_3.txt AC 1 ms 256 KB
small_4.txt AC 1 ms 256 KB
small_5.txt AC 1 ms 256 KB
small_6.txt AC 1 ms 256 KB
small_7.txt AC 1 ms 256 KB
small_8.txt AC 1 ms 256 KB
small_9.txt AC 1 ms 256 KB