Submission #1612510


Source Code Expand

#include <bits/stdc++.h>
#define REP(i,a,b) for(int i=(a);i<(b);i++)
#define RREP(i,a,b) for(int i=(a);i>=(b);i--)
typedef long long ll; typedef long double ld;
using namespace std;
const int INF=1e9, MOD=1e9+7;
const int MAX_N=10000;
int n,k;
bool used[10]={};
string w,s[10];
set<string> st;

int dfs(int i, int d){
	if(used[i]) return 0;
	if(d==k){st.insert(w); return 0;}
	used[i]=true;
	
	REP(i,0,n){
		int a=s[i].size();
		w+=s[i];
		dfs(i,d+1);
		REP(j,0,a) w.pop_back();
	}
	used[i]=false;
	return 0;
		
}

int main(){
	cin >> n >> k;
	REP(i,0,n) cin >> s[i];
	
	REP(i,0,n){
		w=s[i];
		dfs(i,1);
	}
	
	cout << st.size() << endl;
	return 0;
}

Submission Info

Submission Time
Task D - カード並べ
User ecasdqina
Language C++14 (GCC 5.4.1)
Score 100
Code Size 691 Byte
Status AC
Exec Time 3 ms
Memory 512 KB

Judge Result

Set Name set01 set02 set03 set04 set05
Score / Max Score 20 / 20 20 / 20 20 / 20 20 / 20 20 / 20
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
set01 data1
set02 data2
set03 data3
set04 data4
set05 data5
Case Name Status Exec Time Memory
data1 AC 1 ms 256 KB
data2 AC 1 ms 256 KB
data3 AC 3 ms 384 KB
data4 AC 3 ms 384 KB
data5 AC 3 ms 512 KB