제출 #211501

#제출 시각아이디문제언어결과실행 시간메모리
211501Pajaraja건물 4 (JOI20_building4)C++17
100 / 100
425 ms27780 KiB
#include <bits/stdc++.h> #define MAXN 500007 using namespace std; int mn[2][2*MAXN],mx[2][2*MAXN],a[2][2*MAXN]; bool mz[2][2*MAXN]; char rc[2*MAXN]; void reconstruct(int k,int ind,int val) { rc[ind]='A'+k; if(!ind) return; for(int t=0;t<2;t++) if(a[t][ind-1]<=a[k][ind] && mn[t][ind-1]<=val-k && mx[t][ind-1]>=val-k) {reconstruct(t,ind-1,val-k); return;} } int main() { int n; scanf("%d",&n); for(int i=0;i<2*n;i++) scanf("%d",&a[0][i]); for(int i=0;i<2*n;i++) scanf("%d",&a[1][i]); mz[0][0]=mz[1][0]=true; mn[0][0]=mx[0][0]=0; mn[1][0]=mx[1][0]=1; for(int i=1;i<2*n;i++) mn[0][i]=mn[1][i]=2*n+12; for(int i=1;i<2*n;i++) for(int j=0;j<2;j++) for(int k=0;k<2;k++) if(a[k][i-1]<=a[j][i] && mz[k][i-1]) { mz[j][i]=true; mn[j][i]=min(mn[j][i],mn[k][i-1]+j); mx[j][i]=max(mx[j][i],mx[k][i-1]+j); } for(int t=0;t<2;t++) if(mn[t][2*n-1]<=n && mx[t][2*n-1]>=n && mz[t][2*n-1]) { reconstruct(t,2*n-1,n); for(int i=0;i<2*n;i++) printf("%c",rc[i]); return 0; } printf("-1"); }

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

building4.cpp: In function 'int main()':
building4.cpp:16:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
  ~~~~~^~~~~~~~~
building4.cpp:17:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(int i=0;i<2*n;i++) scanf("%d",&a[0][i]);
                         ~~~~~^~~~~~~~~~~~~~~
building4.cpp:18:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(int i=0;i<2*n;i++) scanf("%d",&a[1][i]);
                         ~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...