제출 #42301

#제출 시각아이디문제언어결과실행 시간메모리
42301wilwxk호화 벙커 (IZhO13_burrow)C++14
0 / 100
2 ms380 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN=1e3+3; int ori[MAXN][MAXN]; int h[MAXN][MAXN]; int ent[MAXN]; stack<int> st, sti; int xx, yy, x, respf, maior; int testa(int k) { for(int i=1; i<=xx; i++) { for(int j=1; j<=yy; j++) { if(ori[i][j]>=k) h[i][j]=1; else h[i][j]=0; if(h[i][j]==1) h[i][j]=h[i-1][j]+1; else h[i][j]=0; } } int resp=0; while(st.size()) { st.pop(); sti.pop(); } ent[0]=0; st.push(-2); sti.push(0); for(int i=1; i<=xx; i++) { for(int j=1; j<=yy+1; j++) { int cur=h[i][j]; if(j==yy+1) cur=-1; while(st.top()>=cur) { int area=st.top()*(j-ent[sti.top()]); resp=max(resp, area); st.pop(); sti.pop(); } ent[j]=sti.top(); ent[j]++; st.push(h[i][j]); sti.push(j); } } //printf("%d : %d\n", k, resp); if(resp>=x) return resp; else return -1; } int main() { int inu=scanf("%d %d %d", &xx, &yy, &x); for(int i=1; i<=xx; i++) { for(int j=1; j<=yy; j++) { int inu=scanf("%d", &ori[i][j]); maior=max(maior, ori[i][j]); } } respf=0; for(int i=maior; i>=1; i/=2) { while(testa(respf+i)!=-1) respf+=i; } printf("%d %d\n", respf, testa(respf)); }

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

burrow.cpp: In function 'int main()':
burrow.cpp:44:17: warning: unused variable 'inu' [-Wunused-variable]
             int inu=scanf("%d", &ori[i][j]); maior=max(maior, ori[i][j]);
                 ^
burrow.cpp:41:9: warning: unused variable 'inu' [-Wunused-variable]
     int inu=scanf("%d %d %d", &xx, &yy, &x);
         ^
#Verdict Execution timeMemoryGrader output
Fetching results...