Submission #1178014
Source Code Expand
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<stack>
#include<queue>
#include<vector>
#include<algorithm>
typedef long long int ll;
using namespace std;
#define FOR(i,a,b) for (int i=(a);i<(b);i++)
#define REP(i,n) for (int i=0;i<(n);i++)
#define EREP(i,n) for (int i=1;i<=(n);i++)
//#define EVEL 1
#ifndef EVEL
#define DEB(X) cout << #X << ":" <<X<<" " ;
#define TF(f) f ? cout<<"true " : cout<<"false ";
#define END cout<<"\n";
#else
#define DEB(X) {X;}
#define TF(f) {f;}
#define END {}
#endif
const int MOD = 1000000007;
const int INF = 1000000;
#define NMAX 5000
#define MAX 10
ll sum[NMAX+1],temp,buff=0;
int N,K,ans=0;
int A[100010];
int count=0;
bool dp[NMAX+10][NMAX+10],dp1[NMAX+10][NMAX+10];
bool vis[NMAX+10][NMAX+10],vis1[NMAX+10][NMAX+10];
int low=0,high,mid;
bool dfs(ll x,ll y){
// DEB(x)DEB(y)END
if(y<0)return false;
if(vis[x][y]){
return dp[x][y];
}else vis[x][y]=true;
if(y==0){dp[x][y]=true; /*DEB(dp[x][y])DEB(x)DEB(y)END*/ return dp[x][y];}
if(x==N){dp[x][y]=false;/*DEB(dp[x][y])DEB(x)DEB(y)END*/ return dp[x][y];}
if(dfs(x+1,y)||dfs(x+1,y-A[x])){
dp[x][y]=true;
}else dp[x][y]=false;
//DEB(dp[x][y])DEB(x)DEB(y)END
return dp[x][y];
}
bool front(ll x,ll y){
if(y<0)return false;
if(x<0){
//DEB(dp1[x][y])DEB(x)DEB(y)END
return false;
}
if(vis1[x][y]){
return dp1[x][y];
}else vis1[x][y]=true;
if(y==0){
dp1[x][y]=true; //DEB(dp1[x][y])DEB(x)DEB(y)END
return dp1[x][y];
}
if(front(x-1,y)||front(x-1,y-A[x])){
dp1[x][y]=true;
}else dp1[x][y]=false;
//DEB(dp1[x][y])DEB(x)DEB(y)END
return dp1[x][y];
}
int main(){
ios_base::sync_with_stdio(false);
cin>>N>>K;
ans=N;
REP(i,N){cin>>A[i];}
sort(A,A+N);
high=N-1;
REP(i,N){
bool m=false;
FOR(j,0,K+1){
if(j<0)j=0;
//if(front(i,j)) m=true;
FOR(k,K-A[i]-j,K+1){
//if(j+k>K)break;
DEB(i)DEB(j)DEB(k)
TF(front(i,j))
TF(dfs(i,k))
TF(dfs(i,k)&&front(i,j))
END
if(dfs(i,k)&&front(i,j)){
ans=i;
if(i==N-1)ans=0;
m=true;
break;
}
}
if(m)break;
}
if(m)break;
}
cout<<ans<<endl;
}
//ABC056 AtCoDeer
Submission Info
Submission Time |
|
Task |
A - HonestOrDishonest |
User |
Nafmo2 |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
2677 Byte |
Status |
WA |
Exec Time |
1 ms |
Memory |
256 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 100 |
Status |
|
|
Set Name |
Test Cases |
Sample |
0_000.txt, 0_001.txt, 0_002.txt |
All |
0_000.txt, 0_001.txt, 0_002.txt, 1_003.txt |
Case Name |
Status |
Exec Time |
Memory |
0_000.txt |
WA |
1 ms |
256 KB |
0_001.txt |
WA |
1 ms |
256 KB |
0_002.txt |
WA |
1 ms |
256 KB |
1_003.txt |
WA |
1 ms |
256 KB |