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
AC × 28
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