提出 #5691320
ソースコード 拡げる
#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <cstring>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <bitset>
#include <numeric>
#include <utility>
#include <iomanip>
#include <algorithm>
#include <functional>
#include <unordered_map>
using namespace std;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
template<class T> vector<T> make_vec(size_t a) { return vector<T>(a); }
template<class T, class... Ts> auto make_vec(size_t a, Ts... ts) {
return vector<decltype(make_vec<T>(ts...))>(a, make_vec<T>(ts...));
}
template<class T, class V>
typename enable_if<is_class<T>::value == 0>::type fill(T &t, const V &v) {
t = v;
}
template<class T, class V>
typename enable_if<is_class<T>::value != 0>::type fill(T &t, const V &v){
for (auto &e : t) fill(e, v);
}
#define COUT(x) cout << #x << " = " << (x) << " (L" << __LINE__ << ")" << endl
template<class T1, class T2> ostream& operator << (ostream &s, pair<T1,T2> P)
{ return s << '<' << P.first << ", " << P.second << '>'; }
template<class T> ostream& operator << (ostream &s, vector<T> P)
{ for (int i = 0; i < P.size(); ++i) { if (i > 0) { s << " "; } s << P[i]; } return s; }
template<class T> ostream& operator << (ostream &s, vector<vector<T> > P)
{ for (int i = 0; i < P.size(); ++i) { s << endl << P[i]; } return s << endl; }
#define EACH(i, s) for (__typeof__((s).begin()) i = (s).begin(); i != (s).end(); ++i)
template<class T> ostream& operator << (ostream &s, set<T> P)
{ EACH(it, P) { s << "<" << *it << "> "; } return s << endl; }
template<class T1, class T2> ostream& operator << (ostream &s, map<T1,T2> P)
{ EACH(it, P) { s << "<" << it->first << "->" << it->second << "> "; } return s << endl; }
int N, K;
vector<int> A;
set<int> sA;
vector<string> S;
string solve() {
string res = "";
for (int i = 0; i < 100000; ++i) {
set<char> se;
bool ok = true;
for (auto a : A) {
if (i >= S[a].size()) {
ok = false;
break;
}
se.insert(S[a][i]);
}
if (!ok || se.size() > 1) break;
res += *se.begin();
}
int ma = 0;
for (int i = 0; i < N; ++i) {
if (sA.count(i)) continue;
if (S[i].size() >= res.size() && S[i].substr(0, (int)res.size()) == res) return "-1";
int pl = min((int)res.size() - 1, (int)S[i].size());
for (int j = min((int)res.size(), (int)S[i].size()) - 1; j >= 0; --j) {
if (res[j] != S[i][j]) pl = j;
}
ma = max(ma, pl+1);
}
//COUT(ma);
return res.substr(0, ma);
}
int main() {
while (cin >> N >> K) {
A.resize(K);
sA.clear();
for (int i = 0; i < K; ++i) cin >> A[i], --A[i], sA.insert(A[i]);
S.resize(N);
for (int i = 0; i < N; ++i) cin >> S[i];
cout << solve() << endl;
}
}
提出情報
提出日時 |
|
問題 |
C - 検索 |
ユーザ |
drken |
言語 |
C++14 (GCC 5.4.1) |
得点 |
400 |
コード長 |
3238 Byte |
結果 |
AC |
実行時間 |
106 ms |
メモリ |
10752 KiB |
ジャッジ結果
セット名 |
Sample |
All |
得点 / 配点 |
0 / 0 |
400 / 400 |
結果 |
|
|
セット名 |
テストケース |
Sample |
sample1.txt, sample2.txt, sample3.txt |
All |
sample1.txt, sample2.txt, sample3.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, long.txt, long2.txt, sample1.txt, sample2.txt, sample3.txt, long.txt, long2.txt |
ケース名 |
結果 |
実行時間 |
メモリ |
in1.txt |
AC |
5 ms |
384 KiB |
in10.txt |
AC |
4 ms |
384 KiB |
in11.txt |
AC |
8 ms |
896 KiB |
in12.txt |
AC |
5 ms |
384 KiB |
in13.txt |
AC |
6 ms |
512 KiB |
in14.txt |
AC |
5 ms |
384 KiB |
in15.txt |
AC |
5 ms |
384 KiB |
in16.txt |
AC |
1 ms |
256 KiB |
in17.txt |
AC |
5 ms |
384 KiB |
in18.txt |
AC |
5 ms |
512 KiB |
in19.txt |
AC |
8 ms |
896 KiB |
in2.txt |
AC |
9 ms |
896 KiB |
in20.txt |
AC |
7 ms |
512 KiB |
in3.txt |
AC |
34 ms |
6272 KiB |
in4.txt |
AC |
103 ms |
10752 KiB |
in5.txt |
AC |
5 ms |
384 KiB |
in6.txt |
AC |
2 ms |
256 KiB |
in7.txt |
AC |
4 ms |
384 KiB |
in8.txt |
AC |
8 ms |
896 KiB |
in9.txt |
AC |
106 ms |
10752 KiB |
long.txt |
AC |
7 ms |
512 KiB |
long2.txt |
AC |
14 ms |
2304 KiB |
sample1.txt |
AC |
1 ms |
256 KiB |
sample2.txt |
AC |
1 ms |
256 KiB |
sample3.txt |
AC |
1 ms |
256 KiB |