Submission #118733

#TimeUsernameProblemLanguageResultExecution timeMemory
118733onjo0127Sequence (BOI14_sequence)C++11
100 / 100
226 ms1456 KiB
#include <bits/stdc++.h> using namespace std; long long solve(vector<int> S, int dep, bool lzn) { if(dep >= 15) return -1; if(S.size() == 1) { if(lzn) { if(S[0] == 0) return 1; if(S[0] == 1) return 10; } long long ret = 0; for(int i=1; i<10; i++) if(S[0] & (1 << i)) { ret *= 10, ret += i; if(S[0] & 1) ret *= 10, --S[0]; } return ret; } long long ret = 1LL * 1e18; for(int i=0; i<10; i++) { vector<int> N; int y = 0; for(int j=0, k=i; j<S.size(); j++, k++, k%=10) { if(j && !k) N.push_back(y), y = 0; y |= (S[j] & (~(1 << k))); } N.push_back(y); if(N == S) continue; long long tmp = solve(N, dep + 1, N[0] != 0 || (lzn && i == 0)); if(tmp != -1LL) ret = min(ret, tmp * 10 + i); } return ret; } int main() { vector<int> S; int K; scanf("%d",&K); for(int i=0; i<K; i++) { int foo; scanf("%d",&foo); S.push_back(1 << foo); } printf("%lld", solve(S, 1, 1)); return 0; }

Compilation message (stderr)

sequence.cpp: In function 'long long int solve(std::vector<int>, int, bool)':
sequence.cpp:21:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j=0, k=i; j<S.size(); j++, k++, k%=10) {
                     ~^~~~~~~~~
sequence.cpp: In function 'int main()':
sequence.cpp:35:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  int K; scanf("%d",&K);
         ~~~~~^~~~~~~~~
sequence.cpp:37:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int foo; scanf("%d",&foo);
            ~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...