제출 #612087

#제출 시각아이디문제언어결과실행 시간메모리
612087HediChehaidar고대 책들 (IOI17_books)C++17
0 / 100
2 ms468 KiB
#include<bits/stdc++.h> typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef double db; ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a ;} // greatest common divisor (PGCD) ll lcm(ll a , ll b) {return (a * b) / gcd(a , b);} // least common multiple (PPCM) #define ss second #define ff first #define all(x) (x).begin() , (x).end() #define pb push_back #define vi vector<int> #define vii vector<pair<int,int>> #define vl vector<ll> #define vll vector<pair<ll,ll>> #define pii pair<int,int> #define pll pair<ll,ll> #define pdd pair<double,double> #define vdd vector<pdd> #define dte tuple<double , double , double> using namespace std; const int INF = 1000*1000*1000; // 1 e 9 const int MOD = 1e9 + 7;//998244353 ; const double EPS = 0.000000001; // 1 e -9 const ll inf = (ll)1e18; int n ; set<tuple<vi , int , int>> ss; map<tuple<vi , int , int> , int> dist; queue<tuple<vi , int , int>> q; int d = 0; ll solve(vi v , int pos , int hand){ if(pos < n - 1){ auto k = make_tuple(v , pos + 1 , hand); if(ss.find(k) == ss.end()){ ss.insert(k) ; dist[k] = d + 1; q.push(k); } } if(pos > 0){ auto k = make_tuple(v , pos - 1 , hand); if(ss.find(k) == ss.end()){ ss.insert(k) ; dist[k] = d + 1; q.push(k); } } } ll minimum_walk(vi p , int s){ n = p.size(); if(n > 4) return 0; q.push(make_tuple(p , s , -1)); ss.insert(make_tuple(p , s , -1)); dist[make_tuple(p , s , -1)] = 0; while(!q.empty()){ d = dist[q.front()]; vi cur; int pos , hand; tie(cur , pos , hand) = q.front(); q.pop(); solve(cur , pos , hand); swap(hand , cur[pos]); solve(cur , pos, hand); } vi ans; for(int i = 0 ; i < n ; i++) ans.pb(i); return dist[make_tuple(ans, s , -1)]; } /*int main(){ //ifstream fin ("testing.txt"); //ofstream fout ("output.txt"); ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int nn , sa; cin>>nn>>sa; vi vv(nn); for(int i = 0 ; i < nn ; i++) cin>>vv[i]; cout << minimum_walk(vv , sa); return 0; } */ /* Think of : BS / DFS / BFS / SSSP / SCC / MSP / MAX FLOW / TOPSORT / LCA / MATRIX / DP(bitmask) / 2 POINTERS / SEG TREE / MATH / UN FIND / MO / HLD Read the statement CAREFULLY !! Make a GREADY APPROACH !!!! (start from highest / lowest) Make your own TESTS !! Be careful from CORNER CASES ! */

컴파일 시 표준 에러 (stderr) 메시지

books.cpp: In function 'll solve(std::vector<int>, int, int)':
books.cpp:46:1: warning: no return statement in function returning non-void [-Wreturn-type]
   46 | }
      | ^
#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...