제출 #1242608

#제출 시각아이디문제언어결과실행 시간메모리
1242608rdwabdellahArranging Shoes (IOI19_shoes)C++20
10 / 100
1135 ms1114112 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; bool check(vector<int> S){ int n = (int)S.size(); for (int i = 0; i < n; ++i){ if(i%2==0 && abs(S[i])!=abs(S[i+1])) return 0; if(i%2==0 && S[i]>0) return 0; if(i%2==1 && S[i]<0) return 0; } return 1; } ll bfs(vector<int> S){ if(check(S)){ return 0; } queue<vector<int>> q; int n = (int)S.size(); map<vector<int>, bool> mp; map<vector<int>, ll> dist; q.push(S); while(q.size()){ vector<int> cur; for(auto &i : q.back()) cur.push_back(i); q.pop(); for (int i = 0; i < n-1; ++i){ if(cur[i]==cur[i+1]) continue; vector<int> vec; for(auto &j : cur) vec.push_back(j); vec[i]=cur[i+1]; vec[i+1]=cur[i]; if(mp[vec]) continue; if(dist[vec]>0) dist[vec] = min(dist[vec],dist[cur]+1); dist[vec] = dist[cur]+1; mp[vec]=true; if(check(vec)){ return dist[vec]; } q.push(vec); } } return 0; } ll count_swaps(vector<int> S){ ll ans = bfs(S); return ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...