그리디(?)적으로 생각했을 때 그냥 자기 자리로 찾아가는 녀석의 수를 줄이면 된다.문제가 원하는 것은 오름차순으로 정렬을 하는데 움직이는 학생의 수를 줄이는 것이므로 전체에서 오름차순으로 정렬되어 있는 최대 학생의 수를 빼면 된다는 것을 쉽게 알 수 있다. 즉 전체에서 lis를 빼주면 된다.더보기int main() { fastio; int n; cin>>n; vectorarr(n); for(auto&v:arr)cin>>v; vectordp(n,0); int ans=0; for(int i=0; iarr[j])dp[i]=max(dp[i],dp[j]+1); } ans=max(ans,dp[i]); } cout