제출 #915553

#제출 시각아이디문제언어결과실행 시간메모리
915553vjudge1Bomb (IZhO17_bomb)C++17
30 / 100
1052 ms1884 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC optimization("unroll-loops") #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt") #include <iostream> #include <vector> #define pb push_back #define str string using namespace std; int pp[501][501]; int u[501][501]; void solve(){ int n,m; cin>>n>>m; if(n==1){ str s; cin>>s; vector<int >v; int k=0; for(int i=0;i<m;i++){ if(s[i]=='1')k++; else{ if(k>0){ v.pb(k); k=0; } } } if(k>0){ v.pb(k); } int ans=1; if(v.size()==0){ cout<<0; return; } for(int i=2;i<=m;i++){ k=1; for(int j=0;j<(int)v.size();j++){ if(v[j]<i){ k=0; break; } } if(k==1){ ans=i; } } cout<<ans; } else if(m==1){ char s; vector<int >v; int k=0; for(int i=0;i<n;i++){ cin>>s; if(s=='1')k++; else{ if(k>0){ v.pb(k); k=0; } } } if(k>0){ v.pb(k); } int ans=1; if(v.size()==0){ cout<<0; return; } for(int i=2;i<=n;i++){ k=1; for(int j=0;j<(int)v.size();j++){ if(v[j]<i){ k=0; break; } } if(k==1){ ans=i; } } cout<<ans; } else if(n<=300 && m<=300){ str s[n+3]; int a[n+3][m+3]; int o=0; for(int i=1;i<=n;i++){ cin>>s[i]; for(int j=0;j<m;j++){ a[i][j+1]=s[i][j]-'0'; o+=(a[i][j]==1); pp[i][j+1]=a[i][j+1]+pp[i][j]+pp[i-1][j+1]-pp[i-1][j]; } } if(o==0){ cout<<0; return; } int ans=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(i*j<=ans){ continue; } for(int i1=1;i1<=n;i1++){ for(int j1=1;j1<=m;j1++){ u[i1][j1]=0; } } for(int i1=1;i1<=n;i1++){ for(int j1=1;j1<=m;j1++){ if(i1+i-1>n || j1+j-1>m)continue; if(pp[i1+i-1][j1+j-1]+pp[i1-1][j1-1]-pp[i1+i-1][j1-1]-pp[i1-1][j1+j-1]==i*j){ for(int i2=i1;i2<=i1+i-1;i2++){ for(int j2=j1;j2<=j1+j-1;j2++){ u[i2][j2]=1; } } } } } int k=1; for(int i1=1;i1<=n;i1++){ for(int j1=1;j1<=m;j1++){ if(u[i1][j1]!=a[i1][j1]){ k=0; break; } } } if(k==1){ /*cout<<i<<" "<<j<<"\n"; for(int i1=1;i1<=n;i1++){ for(int j1=1;j1<=m;j1++){ cout<<u[i1][j1]; } cout<<"\n"; }//*/ ans=max(ans,i*j); } } } cout<<ans; } else { cout<<n*m; } } signed main(){ ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0); //srand( time(0)); //rand() //freopen("sum.in", "r", stdin); //freopen("sum.out", "w", stdout); int tests=1; //cin>>tests; for(int i=1;i<=tests;i++){ //cout<<"TEST CASE : "<<i<<"\n"; solve(); } }

컴파일 시 표준 에러 (stderr) 메시지

bomb.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    3 | #pragma GCC optimization("unroll-loops")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...