Submission #205639

#TimeUsernameProblemLanguageResultExecution timeMemory
205639KastandaRope (JOI17_rope)C++11
45 / 100
2595 ms2680 KiB
// In The Name Of The Queen #include<bits/stdc++.h> using namespace std; const int N = 100005; int n, m, A[N], dp[N][2][2]; inline void smin(int &a, int b) {a = min(a, b);} int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; i ++) scanf("%d", &A[i]); for (int c = 1; c <= m; c ++) { int Mn = 0; for (int i = 1; i <= n; i ++) if (A[i] != c) Mn ++; for (int d = 1; d <= m; d ++) if (d != c) { int cls[2] = {c, d}, cnt[2] = {0, 0}; memset(dp, 63, sizeof(dp)); for (int i = 1; i <= n; i ++) { cnt[0] += (A[i] != cls[0]); cnt[1] += (A[i] != cls[1]); dp[i][0][0] = dp[i][0][1] = cnt[0]; dp[i][1][0] = dp[i][1][1] = cnt[1]; } for (int i = 1; i < n; i ++) for (int w = 0; w <= 1; w ++) for (int p = 0; p <= 1; p ++) { smin(dp[i + 1][w][!p], dp[i][w][p] + (A[i + 1] != cls[w])); if (!p) smin(dp[i + 1][!w][1], dp[i][w][p] + (A[i + 1] != cls[!w])); } for (int w = 0; w <= 1; w ++) for (int p = 0; p <= 1; p ++) Mn = min(Mn, dp[n][w][p]); } printf("%d\n", Mn); } return 0; }

Compilation message (stderr)

rope.cpp: In function 'int main()':
rope.cpp:9:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~
rope.cpp:11:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &A[i]);
         ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...