# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
676465 | 2022-12-31T03:31:15 Z | penguin133 | 팬케이크 정렬 (NOI12_pancake) | C++17 | 275 ms | 6900 KB |
#include <bits/stdc++.h> using namespace std; map<vector<int>, int> m; map<int, int> m2; int main(){ ios::sync_with_stdio(0);cin.tie(0); for(int i=1;i<=8;i++){ vector<int>ans; for(int j=i;j>=1;j--)ans.push_back(j); m[ans] = 1; queue<pair<int, vector<int> > >q; q.push(make_pair(1, ans)); while(!q.empty()){ int x = q.front().first; vector<int>tmp = q.front().second; vector<int>ab = tmp; q.pop(); vector<int>tmp2, tmp3; while(!tmp.empty()){ int y = tmp.back(); tmp.pop_back(); tmp2.push_back(y); tmp3 = tmp; for(int i=0;i<tmp2.size();i++)tmp3.push_back(tmp2[i]); if(!m[tmp3] || m[tmp3] > m[ab] + 1)m[tmp3] = m[ab] + 1, q.push(make_pair(x+1, tmp3)); } } } int t;cin >> t; while(t--){ int n,a; cin >> n; pair<int, int> A[9]; for(int i=1;i<=n;i++)cin >> A[i].first, A[i].second = i; sort(A+1, A+n+1); vector<int> v(n); for(int i=1;i<=n;i++)v[A[i].second - 1] = i; cout << m[v] - 1 << '\n'; } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 254 ms | 6888 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 260 ms | 6740 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 275 ms | 6784 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 251 ms | 6724 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 260 ms | 6900 KB | Output is correct |