aaa
#pragma GCC optimize(2) #include <iostream> #include <map> #include <ctime> #include <vector> #include <climits> #include <algorithm> #include <random> #include <cstring> #include <cstdio> #include <map> #include <set> #include <bitset> #include <queue> #define inf 0x3f3f3f3f #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #define rep(i, a, n) for(int i = a; i <= n; ++ i) #define per(i, a, n) for(int i = n; i >= a; -- i) #define ONLINE_JUDGE using namespace std; typedef long long ll; const int mod=1e9+7; template<typename T>void write(T x) { if(x<0) { putchar('-'); x=-x; } if(x>9) { write(x/10); } putchar(x%10+'0'); } template<typename T> void read(T &x) { x = 0;char ch = getchar();ll f = 1; while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();} while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f; } int gcd(int a,int b){return b==0?a:gcd(b,a%b);} int lcm(int a,int b){return a/gcd(a,b)*b;}; ll ksm(ll a,ll n){ ll ans=1; while(n){ if(n&1) ans=(ans*a)%mod; a=a*a%mod; n>>=1; } return ans%mod; } //============================================================== const int maxn=2e5+100; const int maxai=1e7+100; int a[maxn]; int vis[maxai]; int n; int solve(){ rep(i,1,n){ vis[a[i]]++; } int res=0; per(i,1,maxai){ if(!vis[i]) continue; int ans=vis[i]; for(int j=i+i;j<maxai;j+=j){ ans+=vis[i]; } res=max(res,ans); } return res; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif //clock_t c1 = clock(); //=========================================================== read(n); rep(i,1,n) read(a[i]); write(solve()); //=========================================================== //std::cerr << "Time:" << clock() - c1 << "ms" << std::endl; return 0; }
;;
#include <bits/stdc++.h> using namespace std; int n,m; int ans=0; int dir[][2]={-1,-2,-2,-1,-2,1,-1,2}; int have[100][100]; void dfs(int x,int y,int cnt){ int dx=x,dy=y+1; if(y>m) dx++,dy=1; if(x>n){ int res=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ res+=have[i][j]; } } ans=max(ans,res); return ; } dfs(dx,dy,cnt); int flag=0; for(int i=0;i<4;i++){ int xx=x+dir[i][0]; int yy=y+dir[i][1]; if(xx<=0||yy<=0||xx>n||yy>m) continue; if(have[xx][yy]){ flag=1; break; } } if(!flag){ have[x][y]=1; dfs(dx,dy,cnt+1); have[x][y]=0; } return ; } int main(){ while(cin>>n>>m){ ans=0; dfs(1,1,0); cout<<ans<<endl; } return 0; }