Submission #105055

#TimeUsernameProblemLanguageResultExecution timeMemory
105055antimirageLamps (JOI19_lamps)C++14
100 / 100
106 ms67064 KiB
# include <bits/stdc++.h> using namespace std; const int N = 1e6 + 5; int n, dp[N][4][4]; char a[N], b[N]; main(){ memset( dp, 0x3f3f3f3f, sizeof(dp) ); cin >> n; scanf("\n%s", a + 1); scanf("\n%s", b + 1); dp[0][2][0] = 0; for (int i = 1; i <= n; i++){ for (int j = 0; j < 3; j++){ if (b[i] - 48 == j){ dp[i][j][0] = min(dp[i - 1][j][1], dp[i - 1][j][0]); for (int l = 0; l < 3; l++){ dp[i][j][0] = min( dp[i][j][0], dp[i - 1][l][0] + 1); dp[i][j][0] = min( dp[i][j][0], dp[i - 1][l][1] + 1); } } if (b[i] - 48 == (j ^ 1) ){ dp[i][j][1] = min( dp[i - 1][j][0] + 1, dp[i - 1][j][1]); for (int l = 0; l < 3; l++){ dp[i][j][1] = min( dp[i][j][1], dp[i - 1][l][1] + 1); } } if (j == 2 && b[i] == a[i]){ for (int l = 0; l < 3; l++){ dp[i][j][0] = min( dp[i][j][0], dp[i - 1][l][0]); dp[i][j][0] = min( dp[i][j][0], dp[i - 1][l][1]); } } if (j == 2 && b[i] != a[i]){ for (int l = 0; l < 3; l++){ dp[i][j][1] = min( dp[i][j][1], dp[i - 1][l][1]); dp[i][j][1] = min( dp[i][j][1], dp[i - 1][l][0] + 1); } } } } int ans = n + 1; for (int i = 0; i < 3; i++) for (int j = 0; j < 2; j++) ans = min(ans, dp[n][i][j]); cout << ans << endl; } /** 13 0101100101001 1011111000000 13 0001101001101 0101100011011 8 11011100 01101001 **/

Compilation message (stderr)

lamp.cpp:11:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main(){ 
      ^
lamp.cpp: In function 'int main()':
lamp.cpp:15:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("\n%s", a + 1);
  ~~~~~^~~~~~~~~~~~~~~
lamp.cpp:16:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("\n%s", b + 1);
  ~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...