답안 #660335

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
660335 2022-11-21T16:28:59 Z urosk 고대 책들 (IOI17_books) C++14
컴파일 오류
0 ms 0 KB
#include "books.h"
#define dbg(x) cerr<<#x<<": "<<x<<endl
#define here cerr<<"================================\n"
#include <bits/stdc++.h>
#define ll long long
#define llinf 1000000000000000000LL
#define pb push_back
#define sz(a) (ll)(a.size())
#define all(a) a.begin(),a.end()
#define fi first
#define sc second
#define endl '\n'
#define ceri(a,l,r) {for(ll i_ = l;i_<=r;i_++) cerr<<a[i_]<< " ";cerr<<endl;}

using namespace std;
#define maxn 1000005
ll n,st,it;
ll a[maxn],col[maxn],mx[maxn];
vector<ll> g[maxn];
long long minimum_walk(vector<int> p, int s) {
    n = sz(p);
    for(ll i = 1;i<=n;i++) a[i] = p[i-1]+1;
    reverse(all(p));
    //if(is_sorted(all(p))&&n==4) return 8;
    st = s+1;
    ll ans = 0;
    for(ll i = 1;i<=n;i++){
        if(col[i]) continue;
        if(i==a[i]) continue;
        ll x = a[i];
        ans+=abs(i-a[i]);
        it++;
        col[i] = it;
        mx[it] = i;
        while(x!=i){
            mx[it] = max(mx[it],x);
            col[x] = it;
            ans+=abs(x-a[x]);
            x = a[x];
        }
    }
    set<ll> cur;
    for(ll i = 1;i<=n;i++){
        if(col[i]){
            for(ll j = 1;j<=it;j++) if(mn[j]<=mx[col[i]]) cur.insert(j);
        }
        if(sz(cur)==it){
            ans+=2*(i-1);
            break;
        }
    }
	return ans;
}
/*
4 0
0 2 3 1

4 0
3 2 1 0

*/

Compilation message

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:45:40: error: 'mn' was not declared in this scope; did you mean 'mx'?
   45 |             for(ll j = 1;j<=it;j++) if(mn[j]<=mx[col[i]]) cur.insert(j);
      |                                        ^~
      |                                        mx