Submission #110506

#TimeUsernameProblemLanguageResultExecution timeMemory
110506AngusRitossaLamps (JOI19_lamps)C++14
0 / 100
1078 ms23800 KiB
#include <bits/stdc++.h> using namespace std; int memo[1000010][2], done[1000010][2], a[1000010], b[1000010], n, loopcost[1000010][2]; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { char c; scanf(" %c", &c); a[i] = c-'0'; } for (int i = 0; i < n; i++) { char c; scanf(" %c", &c); b[i] = c-'0'; } for (int i = n-1; i >= 0; i--) { for (int t = 0; t < 2; t++) { loopcost[i][t] = 1e9; if (a[i] == (b[i]^t)) { memo[i][t] = memo[i+1][t]; continue; } int ans = memo[i+1][!t] + !t; // Remove/add a toggle, therefore curr is correct int extracost = 1, isok = 1, istoggled = t; if (i != n-1 && b[i+1] == b[i]) { loopcost[i][t] = memo[i+1][t]+1; loopcost[i][t] = min(loopcost[i][t], loopcost[i+1][t]); } else { for (int j = i; j < n; j++) { if ((b[j] == b[i]) != isok) { isok = !isok; istoggled = !istoggled; if (istoggled) extracost++; } int am = memo[j+1][istoggled]+extracost; loopcost[i][t] = min(loopcost[i][t], am); } } ans = min(ans, loopcost[i][t]); memo[i][t] = ans; } } int ans = memo[0][0]; printf("%d\n", ans); }

Compilation message (stderr)

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