Submission #1150918

#TimeUsernameProblemLanguageResultExecution timeMemory
1150918dashkaGroup Photo (JOI21_ho_t3)C++20
100 / 100
262 ms98312 KiB
#include <cstdio> #include <vector> using namespace std; const int INF = 1'000'000'007; bool chmin(int &a, int b) { if (b < a) { a = b; return true; } return false; } int main() { int N; scanf("%d", &N); int H[N]; for (int i = 0; i < N; i++) { scanf("%d", H + i); H[i]--; } int invH[N]; for (int i = 0; i < N; i++) invH[H[i]] = i; int cntup[N][N + 1]; //cntup[pos][num] = count #(position > pos && number >= num) fill(cntup[N - 1], cntup[N], 0); for (int j = N - 1; j; j--) { for (int i = 0; i <= H[j]; i++) cntup[j - 1][i] = cntup[j][i] + 1; for (int i = H[j] + 1; i <= N; i++) cntup[j - 1][i] = cntup[j][i]; } int dp[N + 1]; dp[0] = 0; for (int i = 1; i <= N; i++) { dp[i] = INF; int tmp = 0; for (int j = i - 1; j >= 0; j--) { tmp += (N - i) + cntup[invH[j]][j] - 2 * cntup[invH[j]][i]; chmin(dp[i], dp[j] + tmp); } } printf("%d\n", dp[N]); return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:17:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |         scanf("%d", &N);
      |         ~~~~~^~~~~~~~~~
Main.cpp:20:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |                 scanf("%d", H + 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...