Submission #157283

#TimeUsernameProblemLanguageResultExecution timeMemory
157283AKaan37Ancient Books (IOI17_books)C++17
0 / 100
30 ms25208 KiB
#include "books.h" #include <cstdio> #include <vector> #include <cassert> //Sani buyuk Osman Pasa Plevneden cikmam diyor. //FatihSultanMehmedHan //Abdulhamid Han //Bismillahirrahmanirrahim //█▀█─█──█──█▀█─█─█ //█▄█─█──█──█▄█─█▄█ //█─█─█▄─█▄─█─█─█─█ #pragma GCC optimize ("O3") #pragma GCC target ("sse4") #include <bits/stdc++.h> using namespace std; typedef long long lo; typedef pair< lo,lo > PII; #define fi first #define se second #define mp make_pair #define pb push_back #define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define FOR for(int i=1;i<=n;i++) #define mid ((start+end)/2) #define ort ((bas+son)/2) const lo MAX = -1000000000000000000; const lo MIN = 1000000000000000000; const lo inf = 1000000000; const lo KOK = 100000; const lo LOG = 30; const lo li = 500005; const lo mod = 1000000007; int n,m,b[li],a[li],k,flag,t,dp[5][5][5][5][5][1002]; //~ int cev; string s; vector<int> v; using namespace std; inline int f(int sira,int bir,int iki,int uc,int dort,int cev){ //~ cev++; int cevv=inf; if(cev>1000)return inf; //~ cout<<sira<<" : : "<<bir<<" : : "<<iki<<" : : "<<uc<<" : : "<<dort<<endl; if(bir==0 && iki==1 && uc==2 && dort==3)return abs(0-sira); if(~dp[sira][bir][iki][uc][dort][cev])return dp[sira][bir][iki][uc][dort][cev]; //~ if() //~ for(int i=0;i<4;i++){ //~ cevv=min(cevv,f(i,bir,iki,uc,dort,cev+1)+abs(i-sira)); //~ } cevv=min(cevv,f(1,iki,bir,uc,dort,cev+1)+abs(0-sira)+3); cevv=min(cevv,f(0,iki,bir,uc,dort,cev+1)+abs(1-sira)+3); cevv=min(cevv,f(2,uc,iki,bir,dort,cev+1)+abs(0-sira)+4); cevv=min(cevv,f(0,uc,iki,bir,dort,cev+1)+abs(2-sira)+4); cevv=min(cevv,f(3,dort,iki,uc,bir,cev+1)+abs(0-sira)+5); cevv=min(cevv,f(0,dort,iki,uc,bir,cev+1)+abs(3-sira)+5); cevv=min(cevv,f(2,bir,uc,iki,dort,cev+1)+abs(sira-1)+3); cevv=min(cevv,f(1,bir,uc,iki,dort,cev+1)+abs(sira-2)+3); cevv=min(cevv,f(3,bir,dort,uc,iki,cev+1)+abs(sira-1)+4); cevv=min(cevv,f(1,bir,dort,uc,iki,cev+1)+abs(sira-3)+4); cevv=min(cevv,f(3,bir,iki,dort,uc,cev+1)+abs(sira-2)+3); cevv=min(cevv,f(2,bir,iki,dort,uc,cev+1)+abs(sira-3)+3); return dp[sira][bir][iki][uc][dort][cev]=cevv; } long long minimum_walk(std::vector<int> p, int s) { memset(dp,-1,sizeof(dp)); return f(s,p[0],p[1],p[2],p[3],0); }
#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...