結果
| 問題 |
No.115 遠足のおやつ
|
| コンテスト | |
| ユーザー |
ikd
|
| 提出日時 | 2016-10-30 14:45:20 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 9 ms / 5,000 ms |
| コード長 | 869 bytes |
| コンパイル時間 | 885 ms |
| コンパイル使用メモリ | 64,764 KB |
| 実行使用メモリ | 7,936 KB |
| 最終ジャッジ日時 | 2025-01-03 01:15:45 |
| 合計ジャッジ時間 | 2,547 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 40 |
ソースコード
#include<iostream>
#include<vector>
using namespace std;
int memo[101][1001][11];
int N, D, K;
vector<int> ans;
vector<int> mians;
int rec(int i, int s, int m){
if(memo[i][s][m]!=-1) return memo[i][s][m];
if(m==K){
if(s==D){
if(mians.size()==0) mians=ans;
return 1;
}else{
return 0;
}
}
if(i==N){
return 0;
}
int ret=0;
ans.push_back(i+1);
int tukau=rec(i+1, s+(i+1), m+1);
ans.pop_back();
int tukawanai=rec(i+1, s, m);
ret=(tukau||tukawanai);
return memo[i][s][m]=ret;
}
int main(){
cin>> N>> D>> K;
fill((int*)memo, (int*)memo+101*1001*11, -1);
if(rec(0, 0, 0)){
for(int i=0; i<mians.size(); i++){
if(i>0){
cout<< " ";
}
cout<< mians[i];
}
cout<< endl;
}else{
cout<< -1<< endl;
}
return 0;
}
ikd