結果

問題 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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;
}
0