Submission #1221968

#TimeUsernameProblemLanguageResultExecution timeMemory
1221968TadijaSebezGroup Photo (JOI21_ho_t3)C++20
100 / 100
218 ms99764 KiB
#include <bits/stdc++.h>
using namespace std;

const int N=5050;
int cnt[N][N],h[N],pos[N];
int dp[N];

const int inf=1e9+7;

int main(){
    int n;
    scanf("%i",&n);
    for(int i=1;i<=n;i++){
        scanf("%i",&h[i]);
        pos[h[i]]=i;
        for(int j=1;j<=n;j++){
            cnt[i][j]=cnt[i-1][j]+(h[i]<=j);
        }
    }
    for(int i=1;i<=n;i++){
        int add=0;
        dp[i]=inf;
        for(int j=i;j>=1;j--){
            add+=(j-1)-cnt[pos[j]-1][j];
            int tmp=cnt[pos[j]-1][i]-cnt[pos[j]-1][j];
            add-=tmp;
            add+=(i-j)-tmp;
            dp[i]=min(dp[i],dp[j-1]+add);
        }
    }
    printf("%i\n",dp[n]);
    return 0;
}

Compilation message (stderr)

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