Submission #373156
Source Code Expand
#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rep1(i,n) for(int i=1;i<=(int)(n);i++)
#define all(c) c.begin(),c.end()
#define pb push_back
#define fs first
#define sc second
#define show(x) cout << #x << " = " << x << endl
#define chmin(x,y) x=min(x,y)
#define chmax(x,y) x=max(x,y)
using namespace std;
typedef long long ll;
ll p3[13];
int To_int(string s){
istringstream is(s);
int ret;
is>>ret;
return ret;
}
vector<int> vs;
int al[11];
int cnt[11];
ll mod=1e9+7;
void add(ll &x,ll y){
x+=y;
x%=mod;
}
int ne[177147*3][11];
ll dp[177147*3],ndp[177147*3];
int main(){
p3[0]=1;
rep(i,12) p3[i+1]=p3[i]*3;
int n,x,p,tso=0;
cin>>n>>x>>p;
cin.ignore();
rep(i,n){
string s;
cin>>s;
if(s[0]=='?') tso++;
else vs.pb(To_int(s));
}
sort(all(vs));
if(!vs.empty()&&vs[0]==0){
puts("0");
return 0;
}
al[0]=1;
for(int v:vs){
for(int j=x;j>=0;j--){
if(j+v<=x) al[j+v]=min(al[j+v]+al[j],2);
}
}
// rep(i,x+1) cout<<i<<" "<<al[i]<<endl;
n=tso;
dp[1]=1;
rep(i,p3[x+1]){
rep1(j,p){
int a[11]={};
int tmp=i;
rep(k,x+1){
a[k]=tmp%3;
tmp/=3;
}
for(int k=x;k>=0;k--){
if(k+j<=x) a[k+j]=min(a[k+j]+a[k],2);
}
int s=0;
for(int k=x;k>=0;k--){
s*=3;
s+=a[k];
}
ne[i][j]=s;
}
}
rep(i,n){
for(int j=p3[x+1]-1;j>=0;j--){
rep1(k,p){
add(ndp[ne[j][k]],dp[j]);
}
}
rep(j,p3[x+1]) dp[j]=ndp[j],ndp[j]=0;
}
ll ans=0;
rep(i,p3[x+1]){
int a[11]={};
int tmp=i;
rep(k,x+1){
a[k]=tmp%3;
tmp/=3;
}
int sum=0;
// show(i);
rep(j,x+1){
sum+=a[j]*al[x-j];
}
// show(sum);
if(sum==1) add(ans,dp[i]);
}
cout<<ans<<endl;
}
Submission Info
| Submission Time |
|
| Task |
G - 唯一の組み合わせ |
| User |
SAT3 |
| Language |
C++11 (GCC 4.9.2) |
| Score |
200 |
| Code Size |
1755 Byte |
| Status |
AC |
| Exec Time |
1882 ms |
| Memory |
11168 KiB |
Judge Result
| Set Name |
All |
| Score / Max Score |
200 / 200 |
| Status |
|
| Set Name |
Test Cases |
| All |
scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt |
| Case Name |
Status |
Exec Time |
Memory |
| scrambled_00.txt |
AC |
24 ms |
792 KiB |
| scrambled_01.txt |
AC |
23 ms |
800 KiB |
| scrambled_02.txt |
AC |
23 ms |
920 KiB |
| scrambled_03.txt |
AC |
23 ms |
916 KiB |
| scrambled_04.txt |
AC |
24 ms |
792 KiB |
| scrambled_05.txt |
AC |
23 ms |
924 KiB |
| scrambled_06.txt |
AC |
24 ms |
804 KiB |
| scrambled_07.txt |
AC |
24 ms |
920 KiB |
| scrambled_08.txt |
AC |
23 ms |
748 KiB |
| scrambled_09.txt |
AC |
25 ms |
800 KiB |
| scrambled_10.txt |
AC |
23 ms |
792 KiB |
| scrambled_11.txt |
AC |
31 ms |
880 KiB |
| scrambled_12.txt |
AC |
133 ms |
1952 KiB |
| scrambled_13.txt |
AC |
23 ms |
800 KiB |
| scrambled_14.txt |
AC |
1671 ms |
11168 KiB |
| scrambled_15.txt |
AC |
73 ms |
1188 KiB |
| scrambled_16.txt |
AC |
23 ms |
928 KiB |
| scrambled_17.txt |
AC |
47 ms |
4256 KiB |
| scrambled_18.txt |
AC |
76 ms |
4184 KiB |
| scrambled_19.txt |
AC |
23 ms |
924 KiB |
| scrambled_20.txt |
AC |
23 ms |
920 KiB |
| scrambled_21.txt |
AC |
33 ms |
1956 KiB |
| scrambled_22.txt |
AC |
23 ms |
932 KiB |
| scrambled_23.txt |
AC |
208 ms |
8384 KiB |
| scrambled_24.txt |
AC |
206 ms |
8360 KiB |
| scrambled_25.txt |
AC |
191 ms |
4188 KiB |
| scrambled_26.txt |
AC |
192 ms |
4252 KiB |
| scrambled_27.txt |
AC |
1882 ms |
11168 KiB |