提出 #461698
ソースコード 拡げる
#include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <sstream>
#include <set>
#include <map>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#define rep(i,n) for(int i=0;i<(int)(n);++i)
#define iter(a) __typeof(a.begin())
#define FOR(it,a) for(iter(a)it=a.begin();it!=a.end();++it)
#define F first
#define S second
#define SZ(a) (int)((a).size())
#define sz(a) SZ(a)
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define ALL(a) (a).begin(),(a).end()
using namespace std;
typedef long long ll;
typedef pair<int,int> PI;
typedef unsigned long long ull;
#ifdef ONLINE_JUDGE
#define PR(...) (void(0))
#else
#define PR(...) do{cerr << "line : " << __LINE__ << ", " << endl; pr(#__VA_ARGS__, __VA_ARGS__);}while(0)
template<class T>
void pr(const string& name, T t){
cerr << name << ": " << t << endl;
}
template<typename T, typename ... Types>
void pr(const string& names, T t, Types ... rest) {
auto p = names.find(',');
cerr << names.substr(0, p) << ": " << t << ", ";
pr(string(names, p + 1), rest ...);
}
#endif
template<class T,class U> ostream& operator<< (ostream& o, const pair<T,U>& v){return o << "(" << v.F << ", " << v.S << ")";}
template<class T> ostream& operator<< (ostream& o, const vector<T>& v){o << "{";rep(i,SZ(v)) o << (i?", ":"") << v[i];return o << "}";}
template<class T,class U> ostream& operator<< (ostream& o, const map<T,U>& v){o << "{";for(const auto& e : v) o << e << ", ";return o << "}";}
template<class T> ostream& operator<< (ostream& o, const set<T>& v){o << "{";for(const auto& e : v) o << e << ", ";return o << "}";}
template<class T> string to_s(const T& v){ostringstream is;is << v;return is.str();}
const int dx[]={0,1,0,-1,1,1,-1,-1,0};
const int dy[]={1,0,-1,0,-1,1,1,-1,0};
#define endl '\n'
int n, m;
string in[1000];
string word[100];
int bu[100][100];
vector<pair<PI, PI> > kouho;
int use[100];
bool ok(int widx, int kidx){
if(SZ(word[widx]) != kouho[kidx].S.S) return false;
auto p = kouho[kidx].F;
rep(j, SZ(word[widx])){
int cx = p.F + dx[kouho[kidx].S.F] * j;
int cy = p.S + dy[kouho[kidx].S.F] * j;
if(bu[cx][cy] == 0 || in[cx][cy] == word[widx][j]) continue;
return false;
}
return true;
}
void dfs(int ne){
if(ne == m){
rep(i, n) cout << in[i] << endl;
exit(0);
}
rep(i, SZ(kouho)){
if(use[i]) continue;
if(!ok(ne, i)) continue;
use[i] = 1;
auto p = kouho[i].F;
rep(j, SZ(word[ne])){
in[p.F + dx[kouho[i].S.F] * j][p.S + dy[kouho[i].S.F] * j] = word[ne][j];
++bu[p.F + dx[kouho[i].S.F] * j][p.S + dy[kouho[i].S.F] * j];
}
dfs(ne + 1);
rep(j, SZ(word[ne])){
--bu[p.F + dx[kouho[i].S.F] * j][p.S + dy[kouho[i].S.F] * j];
}
use[i] = 0;
}
}
int main(int argc, char *argv[])
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> m;
rep(i, m) cin >> word[i];
rep(i, n) cout << word[i] << endl;
cin >> n;
rep(i, n) cin >> in[i];
rep(i, n) rep(j, SZ(in[i])){
if(in[i][j] == '#') continue;
// if(i && in[i - 1][j] == '.') continue;
// if(j && in[i][j - 1] == '.') continue;
if((i == 0 || in[i-1][j] == '#') && i + 1 < n && in[i + 1][j] == '.'){
int len = 0;
while(i + len < n && in[i + len][j] == '.') ++len;
kouho.pb(mp(mp(i, j), mp(1, len)));
}
if((j == 0 || in[i][j-1] == '#') && j + 1 < SZ(in[i]) && in[i][j + 1] == '.'){
int len = 0;
while(j + len < SZ(in[i]) && in[i][j + len] == '.') ++len;
kouho.pb(mp(mp(i, j), mp(0, len)));
}
}
//PR(kouho);
cout << n << endl;
dfs(0);
}
提出情報
| 提出日時 |
|
| 問題 |
H - 恐怖!不幸を呼ぶ盾 |
| ユーザ |
maguro |
| 言語 |
C++11 (GCC 4.9.2) |
| 得点 |
100 |
| コード長 |
3784 Byte |
| 結果 |
AC |
| 実行時間 |
36 ms |
| メモリ |
932 KiB |
ジャッジ結果
| セット名 |
All |
| 得点 / 配点 |
100 / 100 |
| 結果 |
|
| セット名 |
テストケース |
| All |
00_sample_00.txt, 00_sample_01.txt, 10_min_00.txt, 10_min_01.txt, 10_min_02.txt, 20_max_00.txt, 20_max_01.txt, 20_max_02.txt, 50_small_00.txt, 50_small_01.txt, 50_small_02.txt, 90_random_00.txt, 90_random_01.txt, 90_random_02.txt, 90_random_03.txt, 90_random_04.txt, 90_random_05.txt, 90_random_06.txt, 90_random_07.txt, 90_random_08.txt, 90_random_09.txt, 99_final_00.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
25 ms |
932 KiB |
| 00_sample_01.txt |
AC |
24 ms |
932 KiB |
| 10_min_00.txt |
AC |
26 ms |
920 KiB |
| 10_min_01.txt |
AC |
24 ms |
924 KiB |
| 10_min_02.txt |
AC |
24 ms |
796 KiB |
| 20_max_00.txt |
AC |
25 ms |
800 KiB |
| 20_max_01.txt |
AC |
26 ms |
920 KiB |
| 20_max_02.txt |
AC |
27 ms |
812 KiB |
| 50_small_00.txt |
AC |
27 ms |
796 KiB |
| 50_small_01.txt |
AC |
27 ms |
920 KiB |
| 50_small_02.txt |
AC |
31 ms |
792 KiB |
| 90_random_00.txt |
AC |
26 ms |
924 KiB |
| 90_random_01.txt |
AC |
26 ms |
796 KiB |
| 90_random_02.txt |
AC |
27 ms |
792 KiB |
| 90_random_03.txt |
AC |
27 ms |
788 KiB |
| 90_random_04.txt |
AC |
25 ms |
916 KiB |
| 90_random_05.txt |
AC |
26 ms |
916 KiB |
| 90_random_06.txt |
AC |
25 ms |
916 KiB |
| 90_random_07.txt |
AC |
25 ms |
920 KiB |
| 90_random_08.txt |
AC |
27 ms |
920 KiB |
| 90_random_09.txt |
AC |
23 ms |
920 KiB |
| 99_final_00.txt |
AC |
36 ms |
924 KiB |