Submission #114300

#TimeUsernameProblemLanguageResultExecution timeMemory
114300tincamateiLamps (JOI19_lamps)C++14
100 / 100
144 ms27896 KiB
#include <bits/stdc++.h> using namespace std; char getChar(FILE *fin) { char ch = fgetc(fin); while(!isdigit(ch)) ch = fgetc(fin); return ch; } const int MAX_N = 1000000; char str1[1+MAX_N]; char str2[1+MAX_N]; int dp[1+MAX_N][3][2]; // dp[N][0/1/2][0/1] = numarul minim de operatii daca la sfarsit n-am/am set 0/am set 1 si daca n-am/am operatie de xor int main() { int N, rez = MAX_N; scanf("%d", &N); for(int i = 1; i <= N; ++i) str1[i] = getChar(stdin); for(int i = 1; i <= N; ++i) str2[i] = getChar(stdin); for(int i = 0; i <= N; ++i) for(int setmask = 0; setmask < 3; ++setmask) for(int xormask = 0; xormask < 2; ++xormask) dp[i][setmask][xormask] = MAX_N + 1; dp[0][0][0] = 0; for(int i = 1; i <= N; ++i) { for(int setmask1 = 0; setmask1 < 3; ++setmask1) for(int xormask1 = 0; xormask1 < 2; ++xormask1) for(int setmask2 = 0; setmask2 < 3; ++setmask2) for(int xormask2 = 0; xormask2 < 2; ++xormask2) { char chVal = str1[i]; int cost = 0; if(setmask2 == 1) chVal = '0'; else if(setmask2 == 2) chVal = '1'; if(xormask2 == 1) chVal = '0' + '1' - chVal; if(setmask1 != setmask2 && setmask2 != 0) ++cost; if(xormask1 != xormask2 && xormask2 != 0) ++cost; if(chVal == str2[i]) dp[i][setmask2][xormask2] = min(dp[i - 1][setmask1][xormask1] + cost, dp[i][setmask2][xormask2]); } } for(int setmask = 0; setmask < 3; ++setmask) for(int xormask = 0; xormask < 2; ++xormask) rez = min(rez, dp[N][setmask][xormask]); printf("%d", rez); return 0; }

Compilation message (stderr)

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