Submission #12028

#TimeUsernameProblemLanguageResultExecution timeMemory
12028dohyun0324Sequence (BOI14_sequence)C++98
25 / 100
184 ms2020 KiB
#include<stdio.h> #include<vector> using namespace std; int r,n; long long int dap=2147483647000000000000LL,c,p,arr[513]; void dfs(long long int num,vector<int>a,int n,long long int w) { int i,j; if(num>=dap) return; if(n==-1) { if(num<w) num+=w*10; if(num==0) num=w*10; if(dap>num) { dap=num; } return; } if(n==1) { c=0; p=1; r=a[0]; for(i=1;i<=9;i++) { if((1<<i)&a[0]) { c=c*10+i; if(c<10 && 1&a[0]) c=c*10; } } if(c==0 && 1&a[0]) c=10; if(c>dap/w) return; c*=w; c+=num; if(c==0) c=w*10; if(dap>c) { dap=c; } return; } for(i=0;i<=9;i++) { vector<int>s((i+n-1)/10+1); int sw=0; for(j=0;j<n;j++) { r=a[j]; s[(i+j)/10]|=a[j]&(1023-(1<<((i+j)%10))); if(s[(i+j)/10]) sw=1; } r=a[0]; r=a[1]; r=a[2]; r=a[3]; if(sw==0){dfs(i*w+num,s,-1,w); break;} dfs(i*w+num,s,(i+n-1)/10+1,w*10); } } int main() { int i; scanf("%d",&n); vector<int>a(n); for(i=0;i<n;i++){ scanf("%d",&a[i]); a[i]=(1<<a[i]); } dfs(0,a,n,1); printf("%lld",dap); return 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...