Submission #895872

#TimeUsernameProblemLanguageResultExecution timeMemory
895872noomptyVim (BOI13_vim)C++17
100 / 100
27 ms36744 KiB
#include<algorithm> #include<cstdio> #include<cstring> using namespace std; const int maxn=7e4,alpha='k'-'a'+1; int n,len,cnte,f[maxn+1][alpha],g[maxn+1][alpha][alpha]; bool key[maxn+2]; char s[maxn+3]; int main() { memset(f,0x3f,sizeof f); memset(g,0x3f,sizeof g); scanf("%d\n",&n); for(int i=1,check=0;i<=n;++i) { char t=getchar(); if(t=='e') check=++cnte; else { key[++len]=check; s[len]=t-'a'; check=0; } } f[0][s[1]]=0; for(int i=1;i<=len;++i) for(int j=0;j<alpha;++j) { if(j!=s[i]) { if(!key[i]) f[i][j]=f[i-1][j]; f[i][j]=min(f[i][j],g[i-1][s[i]][j]); } f[i][j]=min(f[i][j],min(f[i-1][s[i]],g[i-1][s[i]][s[i]])+2); for(int k=0;k<alpha;++k) { if(j!=s[i]&&k!=s[i]) g[i][j][k]=g[i-1][j][k]+1; if(j!=s[i]) g[i][j][k]=min(g[i][j][k],min(f[i-1][j],g[i-1][j][s[i]])+3); if(k!=s[i]) g[i][j][k]=min(g[i][j][k],g[i-1][s[i]][k]+3); g[i][j][k]=min(g[i][j][k],min(g[i-1][s[i]][s[i]]+5,f[i-1][s[i]]+5)); } } printf("%d",f[len][alpha-1]+(cnte<<1)-2); return 0; }

Compilation message (stderr)

vim.cpp: In function 'int main()':
vim.cpp:26:10: warning: array subscript has type 'char' [-Wchar-subscripts]
   26 |  f[0][s[1]]=0;
      |       ~~~^
vim.cpp:34:35: warning: array subscript has type 'char' [-Wchar-subscripts]
   34 |     f[i][j]=min(f[i][j],g[i-1][s[i]][j]);
      |                                ~~~^
vim.cpp:36:38: warning: array subscript has type 'char' [-Wchar-subscripts]
   36 |    f[i][j]=min(f[i][j],min(f[i-1][s[i]],g[i-1][s[i]][s[i]])+2);
      |                                   ~~~^
vim.cpp:36:51: warning: array subscript has type 'char' [-Wchar-subscripts]
   36 |    f[i][j]=min(f[i][j],min(f[i-1][s[i]],g[i-1][s[i]][s[i]])+2);
      |                                                ~~~^
vim.cpp:36:57: warning: array subscript has type 'char' [-Wchar-subscripts]
   36 |    f[i][j]=min(f[i][j],min(f[i-1][s[i]],g[i-1][s[i]][s[i]])+2);
      |                                                      ~~~^
vim.cpp:42:59: warning: array subscript has type 'char' [-Wchar-subscripts]
   42 |      g[i][j][k]=min(g[i][j][k],min(f[i-1][j],g[i-1][j][s[i]])+3);
      |                                                        ~~~^
vim.cpp:44:42: warning: array subscript has type 'char' [-Wchar-subscripts]
   44 |      g[i][j][k]=min(g[i][j][k],g[i-1][s[i]][k]+3);
      |                                       ~~~^
vim.cpp:45:45: warning: array subscript has type 'char' [-Wchar-subscripts]
   45 |     g[i][j][k]=min(g[i][j][k],min(g[i-1][s[i]][s[i]]+5,f[i-1][s[i]]+5));
      |                                          ~~~^
vim.cpp:45:51: warning: array subscript has type 'char' [-Wchar-subscripts]
   45 |     g[i][j][k]=min(g[i][j][k],min(g[i-1][s[i]][s[i]]+5,f[i-1][s[i]]+5));
      |                                                ~~~^
vim.cpp:45:66: warning: array subscript has type 'char' [-Wchar-subscripts]
   45 |     g[i][j][k]=min(g[i][j][k],min(g[i-1][s[i]][s[i]]+5,f[i-1][s[i]]+5));
      |                                                               ~~~^
vim.cpp:13:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |  scanf("%d\n",&n);
      |  ~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...