牛客練習賽33 B tokitsukaze and RPG
阿新 • • 發佈:2018-12-15
第一次很暴力的計數,結果超時了。想想又改了一下,就可以了。遍歷一遍統計最大就行了
#include<stdio.h> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<string.h> #include<queue> #include<stack> #include<list> #include<map> #include<set> #include<vector> using namespace std; typedef long long int ll; const int maxn =3e6+5; const int maxm=10000; const int mod =1e9+7; const int INF=0x3f3f3f3f; const double eps=1e-8; int a[maxn],b[maxn]; int ans,cnt,dis; int x; int main() { int n,k;scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&x),a[x]++; for(int i=1;i<=k;i++) if(a[i]) for(int j=1;j*i<=k;j++) b[j*i]+=a[i]; for(int i=1;i<=k;i++) { if(ans<b[i]) cnt=0,ans=b[i]; if(ans==b[i]) cnt++; } printf("%d %d\n",ans,cnt); return 0; }