Submission #118210

#TimeUsernameProblemLanguageResultExecution timeMemory
118210imyujinLamps (JOI19_lamps)C++14
100 / 100
86 ms43512 KiB
#include<stdio.h>
#include<algorithm>

using namespace std;

#define MAXN 1000005

const int INF=MAXN;
char A[MAXN], B[MAXN];
int dp[MAXN][5], c[MAXN][5];

int main(){
	int N;
	int a[5][5]={{0, 0, 0, 0, 0}, {1, 0, 1, 0, 0}, {1, 1, 0, 0, 0}, {2, 1, 1, 0, 1}, {2, 1, 1, 1, 0}};
	int ans=INF; 

	//freopen("input.txt", "r", stdin);
	scanf("%d\n%s\n%s", &N, A, B);

	for(int i=0; i<N; i++){
		c[i][0]=A[i]==B[i]?0:1;
		c[i][1]=c[i][4]=B[i]=='0'?0:1;
		c[i][2]=c[i][3]=B[i]=='1'?0:1;
	}
	for(int i=0; i<5; i++) dp[0][i]=a[i][0]+c[0][i];
	for(int i=1; i<N; i++) for(int j=0; j<5; j++){
		dp[i][j]=INF;
		for(int k=0; k<5; k++) dp[i][j]=min(dp[i][j], dp[i-1][k]+a[j][k]+(c[i][j]-c[i-1][k]==1?1:0));
	}
	
	for(int i=0; i<5; i++) ans=min(ans, dp[N-1][i]);
	printf("%d", ans);

	return 0;
}

Compilation message (stderr)

lamp.cpp: In function 'int main()':
lamp.cpp:18:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d\n%s\n%s", &N, A, B);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...