Submission #1242590

#TimeUsernameProblemLanguageResultExecution timeMemory
1242590rdwabdellahArranging Shoes (IOI19_shoes)C++20
10 / 100
981 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); mp[cur]=true; q.pop(); for (int i = 0; i < n-1; ++i){ vector<int> vec; for(auto &i : cur) vec.push_back(i); vec[i]=cur[i+1]; vec[i+1]=cur[i]; if(mp[vec]) continue; dist[vec] = dist[cur]+1; if(check(vec)){ //for(auto &i : vec) cout << i << ' '; //cout << '\n'; return dist[vec]; } if(dist[vec]>40400) continue; 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...