結果

問題 No.506 限られたジャパリまん
ユーザー 0214sh7
提出日時 2017-04-12 01:30:18
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 72 ms / 2,000 ms
コード長 1,407 bytes
コンパイル時間 534 ms
コンパイル使用メモリ 67,504 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-06-28 04:08:31
合計ジャッジ時間 1,738 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 25
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <cstdio>
#include <iostream>
#include <cstdlib>
using namespace std;
#define REP(i,n) for (int i=0;i<(n);i++)
#define MOD 1000000007
int add(int);
bool friends[35]={};
int main(){
int H,W,K,P;
int x[35],y[35];
char N[21][12];
long long int dp[35][35]={};
long long int max=0;
int e=0;
bool max_friends[35]={};
cin >> H >> W >> K >> P;
REP(i,K){cin>>x[i]>>y[i]>>N[i];}
while(friends[K]==0){
REP(i,K){e+=friends[i];}
if(e<=P){
REP(i,H+1){
REP(j,W+1){
dp[i][j]= -1;
}
}
dp[0][0]=1;
REP(i,K){if(friends[i]==0){dp[x[i]][y[i]] = 0;}}
REP(i,H+1){
REP(j,W+1){
if(dp[i][j]==-1){
if(i==0 && dp[0][j-1]!=0){
dp[i][j]=1;
}else if(j==0 && dp[i-1][0]!=0){
dp[i][j]=1;
}else if(i!=0 && j!=0){
dp[i][j] = dp[i-1][j]+dp[i][j-1];
}else{
dp[i][j]=0;
}
}
}
}
//REP(i,H+1){REP(j,W+1){cout<<dp[i][j]<<" ";}cout<<endl;}
if(dp[H][W]>max){
max=dp[H][W];
REP(i,K){max_friends[i]=friends[i];}
//cout << max << endl;
}
}
e=0;
add(0);
}
cout << max % MOD <<endl;
REP(i,K){if(max_friends[i]==1){cout<<N[i]<<endl;}}
return 0;
}
int add(int a){
if(friends[a]==0){
friends[a]=1;
}else{
friends[a]=0;
add(a+1);
}
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0