제출 #1000993

#제출 시각아이디문제언어결과실행 시간메모리
1000993OtalpRope (JOI17_rope)C++14
80 / 100
186 ms119892 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int, int>
#define ff first
#define ss second
#define pb push_back

int dp[2][5001][5001];
int cnt[5001];
int a[1001000];

void solve(){
    int n, m;
    cin>>n>>m;
    for(int i=1; i<=n; i++){
        cin>>a[i];
        cnt[a[i]] ++;
    }
    int h[2]={0, 0};
    for(int i=1; i+1<=n; i+=2){
         int l=a[i], r=a[i + 1];
         dp[1][l][r] ++;
         dp[1][r][l] ++;
         h[1] ++;
    }
    for(int i=2; i+1<=n; i+=2){
         int l=a[i], r=a[i + 1];
         dp[0][l][r] ++;
         dp[0][r][l] ++;
         h[0] ++; 
    }
    for(int i=1; i<=m; i++){
        int ans = n - cnt[i];
        for(int j=1; j<=m; j++){
            if(i == j) continue;
            for(int k=0; k<2; k++){
                ans = min(ans, n - cnt[i] - cnt[j] + dp[k][i][j]);
            }
        }
        cout<<ans<<'\n';
    }
}


signed main(){
    solve();
}






















#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...