제출 #895872

#제출 시각아이디문제언어결과실행 시간메모리
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;
} 

컴파일 시 표준 에러 (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...