제출 #527410

#제출 시각아이디문제언어결과실행 시간메모리
527410jamielimOn the Grid (FXCUP4_grid)C++17
0 / 100
1 ms300 KiB
#include "grid.h" #include <bits/stdc++.h> using namespace std; #define pb emplace_back vector<int> SortDisks(int N) { vector<int> test;for(int i=0;i<N;i++)test.pb(i); vector<int> cfm;for(int i=0;i<N;i++)cfm.pb(-1); bool donepos[N];for(int i=0;i<N;i++)donepos[i]=0; set<int> s;for(int i=0;i<N;i++)s.insert(i); //for(int i:test)printf("%d ",i); //printf("\n"); int prv=PutDisks(test); //printf("%d\n",prv); while(!s.empty()){ int first_unknown=-1; int tmp=-1; for(int i=0;i<N;i++){ if(!donepos[i]){ swap(test[i],tmp); if(first_unknown==-1)first_unknown=i; } } swap(test[first_unknown],tmp); //for(int i:test)printf("%d ",i); //printf("\n"); int cur=PutDisks(test); //printf("%d\n",cur); if(cur!=prv-1){ int x=test[first_unknown]; cfm[x]=cur-(N-1)+(first_unknown); donepos[cfm[x]-1]=1; test[cfm[x]-1]=x; s.erase(x); auto it=s.begin(); for(int i=0;i<N;i++){ if(!donepos[i]){ test[i]=(*it); ++it; } } //for(int i:test)printf("%d ",i); //printf("\n"); prv=PutDisks(test); //printf("%d\n",cur); }else prv=cur; //printf("cfm: "); //for(int i:cfm)printf("%d ",i); //printf("\n"); } return cfm; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...