30分,查不出错误,求救
#include<cstdio>
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
int n,m,k[105],p[105],a[1000000],b[1000000],ans,cnt,bnt;
void dfs(int r,int l,int t,int x){
if(r>l){
if(t==1) a[++cnt]=x;
else b[++bnt]=x;
return;
}
int mod=k[r];
for(int i=1; i<=m; i++){
for(int j=1; j<=p[r]; j++)
mod*=i;
dfs(r+1,l,t,x+mod);
mod=k[r];
}
}
int main(){
cin>>n>>m;
for(int i=1; i<=n; i++)
cin>>k[i]>>p[i];
dfs(1,n/2,1,0);
dfs(n/2+1,n,2,0);
sort(a+1,a+cnt+1);
sort(b+1,b+bnt+1);
for(int i=1; i<=cnt; i++)
ans+=(upper_bound(b+1,b+bnt+1,-a[i])-lower_bound(b+1,b+bnt+1,-a[i]));
cout<<ans;
return 0;
}
30分,其余点RE了