제출 #937338

#제출 시각아이디문제언어결과실행 시간메모리
937338amirhoseinfar1385Zoltan (COCI16_zoltan)C++17
21 / 140
19 ms3832 KiB
#include<bits/stdc++.h>
using namespace std;
const int maxn=200000+10,mod=1e9+7;
long long mypow(long long m,long long y){
	if(y==0){
		return 1;
	}
	long long p=mypow(m,(y>>1));
	p*=p;
	p%=mod;
	if(y&1){
		p*=m;
		p%=mod;
	}
	return p;
}
long long n,all[maxn],res,ted;

void vorod(){
	cin>>n;
	for(long long i=0;i<n;i++){
		cin>>all[i];
	}
	if(n>20){
		assert(0);
	}
}

void solve(){
	for(long long i=1;i<(1<<n);i++){
		long long sz=__builtin_popcount(i);
		if(sz<res){
			continue;
		}
		long long f=1,mx=-1,mn=1e9+5;
		for(long long j=0;j<n;j++){
			if((i>>j)&1){
				if(all[j]<=mx&&all[j]>=mn){
					f=0;
					break;
				}
				mn=min(mn,all[j]);
				mx=max(mn,all[j]);
			}
		}
		if(f){
			if(sz==res){
				ted++;
			}else{
				res=sz;
				ted=1;
			}
		}
	}
}

void khor(){
	ted=1ll*ted*mypow(2,n-res)%mod;
	cout<<res<<" "<<ted<<endl;
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
//	freopen("inp.txt","r",stdin);
	vorod();
	solve();
	khor();
}
#Verdict Execution timeMemoryGrader output
Fetching results...