結果
| 問題 |
No.393 2本の竹
|
| コンテスト | |
| ユーザー |
rapurasu
|
| 提出日時 | 2016-07-12 15:59:09 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 70 ms / 1,000 ms |
| コード長 | 1,678 bytes |
| コンパイル時間 | 1,776 ms |
| コンパイル使用メモリ | 168,040 KB |
| 実行使用メモリ | 27,624 KB |
| 最終ジャッジ日時 | 2025-03-14 15:25:22 |
| 合計ジャッジ時間 | 3,727 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 28 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
#define INF 1000000000
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
typedef long long LL;
LL n1[11];
LL n2[11];
LL m[11];
LL A[11][70];
LL ans;
int dp[62][100001];
int main(){
int d;
cin>>d;
REP(i,d){
cin>>n1[i]>>n2[i];
cin>>m[i];
REP(j,m[i]){
cin>>A[i][j];
}
}
REP(i,d){
ans=0;
vector<int> v;
LL nn1=n1[i];
LL nn2=n2[i];
LL mm=m[i];
REP(j,m[i]){
v.push_back(A[i][j]);
}
sort(v.begin(),v.end());
vector<int>s(60,0);
REP(j,m[i]){
if(j==0){
s[0]=v[0];
}else{
s[j]=s[j-1]+v[j];
}
}
int check=0;
REP(j,m[i]){
check++;
if(s[j]>nn1+nn2){
break;
}
}
REP(j,check+1){
REP(k,100001){
dp[j][k]=0;
}
}
dp[0][0]=1;
for(int j=1;j<check+1;j++){
for(int k=0;k<100001;k++){
if(dp[j-1][k]==1){
dp[j][k]=1;
}
if((dp[j-1][k]==1)&&(k+v[j-1]<100001)){
dp[j][k+v[j-1]]=1;
}
}
}
bool p=false;
for(int j=check;j>=0;j--){
for(int k=s[j-1]-nn1;k<=nn2;k++){
if(dp[j][k]==1){
cout<<j<<endl;
p=true;
break;
}
}
if(p==true){
break;
}
}
}
}
rapurasu