1 solutions
-
0
C++ :
#include <stdio.h> #include <stdlib.h> using namespace std; int T,n,m,i,j,k,l,r; char s[105][105]; int f[105][105],from[105][105],ans[105]; int main() { //freopen("aliez.in","r",stdin); //freopen("aliez.out","w",stdout); for(T=1;;++T) { scanf("%d%d",&n,&m); if(n==0&&m==0)break; for(i=1;i<=n;++i)scanf("%s",s[i]+1); scanf("%d%d",&l,&r);--r; for(i=1;i<=m;++i) if(s[r][i]=='A')f[r][i]=0; else f[r][i]=10000; for(i=r-1;i>=l;--i) for(j=1;j<=m;++j) { f[i][j]=10000; if(s[i][j]=='A') { for(k=1;k<=m;++k) if(f[i+1][k]+(j!=k)<f[i][j]) f[i][j]=f[i+1][k]+(j!=k),from[i][j]=k; } } if(T!=1)printf("\n"); printf("Case %d:\n",T); printf("\n"); k=1; for(i=1;i<=m;++i) if(f[l][i]<f[l][k])k=i; if(f[l][k]>=1000)printf("Ti4 Newbee Win\n"); else { for(i=l;i<=r;k=from[i][k],++i)ans[i]=k; for(i=l+1;i<=r;++i)if(ans[i]!=ans[i-1])printf("%c: %d-%d\n",'A'+ans[i-1]-1,l,i),l=i; printf("%c: %d-%d\n",'A'+ans[r]-1,l,r+1); } } }
- 1
Information
- ID
- 770
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By