제출 #66513

#제출 시각아이디문제언어결과실행 시간메모리
66513imsifile디스토브 (FXCUP3_dstorv)C11
컴파일 에러
0 ms0 KiB
#include<stdio.h> typedef long long lld; const lld mod = 1000000007; lld ex(lld a, lld b){ lld gop=1; for(; b; b>>=1){ if(b&1) gop=gop*a%mod; a=a*a%mod; } return gop; } lld r, h, rh, dy1[5050][5050], dy2[5050][5050]; int N, A, B, x, y, xys[5050][2], xyc; bool chk[5050][5050]; char st[5050]; void make_route(int s){ int pv=0; for(int i=s; i<N; i++){ if(st[i]=='R'){ if(pv==-1) xys[xyc][0]=x, xys[xyc][1]=y, xyc++; else if(x) chk[x-1][y]=1; y++, pv=1; } else{ if(pv==1) chk[x][y]=1; chk[x][y+1]=1; x++, pv=-1; } } chk[x][y+1]=1; } int main(){ scanf("%d%lld%lld", &N, &r, &h), rh=ex(r+h,mod-2); r=r*rh%mod, h=h*rh%mod; scanf("\n%s", st); scanf("%d%d", &A, &B); while(N){ if(st[N-1] != 'R') break; N--, A--; } st[N]=0; for(int i=0; i<=N; i++){ if(i==N || st[i] != 'H'){ make_route(i); N -= i; break; } B--; } if(A<0 || B<0){ puts("0"); return 0; } if(N==0){ puts(A==0&&B==0 ? "1" : "0"); return 0; } dy1[B][0]=1; for(int i=0; i<=x; i++){ for(int j=1; j<=y; j++){ if(chk[i][j]) continue; dy1[i][j] += dy1[i][j-1]*r; if(i) dy1[i][j] += dy1[i-1][j]*h; dy1[i][j] %= mod; } } dy2[x][y-A]=1; for(int i=x-1; i>=0; i--){ for(int j=y; j>=0; j--){ if(chk[i][j]) continue; dy2[i][j] += dy2[i][j+1]*r; dy2[i][j] += dy2[i+1][j]*h; dy2[i][j] %= mod; } } if(A==0){ printf("%lld\n", dy1[x][y]); return 0; } if(B==0){ printf("%lld\n", dy2[0][0]); return 0; } lld sum=0; for(int i=0; i<xyc; i++){ int r=xys[i][0], c=xys[i][1]; sum += dy1[r][c]*dy2[r][c]; sum %= mod; } printf("%lld\n", sum); return 0; }

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

dstorv.c:17:1: error: unknown type name 'bool'; did you mean '_Bool'?
 bool chk[5050][5050];
 ^~~~
 _Bool
dstorv.c: In function 'main':
dstorv.c:38:2: warning: ignoring return value of 'scanf', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%lld%lld", &N, &r, &h), rh=ex(r+h,mod-2);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dstorv.c:40:2: warning: ignoring return value of 'scanf', declared with attribute warn_unused_result [-Wunused-result]
  scanf("\n%s", st);
  ^~~~~~~~~~~~~~~~~
dstorv.c:41:2: warning: ignoring return value of 'scanf', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &A, &B);
  ^~~~~~~~~~~~~~~~~~~~~