제출 #400029

#제출 시각아이디문제언어결과실행 시간메모리
400029lyc수열 (BOI14_sequence)C++14
100 / 100
130 ms1108 KiB
#include <bits/stdc++.h> using namespace std; #define TRACE(x) cerr << #x << " :: " << x << endl #define _ << " " << #define SZ(x) (int)(x).size() #define ALL(x) (x).begin(),(x).end() #define FOR(i,a,b) for(int i=(a);i<=(b);++i) #define RFOR(i,a,b) for (int i=(a);i>=(b);--i) typedef long long ll; const int mxK = 1e5+5; int K; ll solve(vector<int>& req, bool pad) { ll ret = 0; if (SZ(req) == 1) { bool zero = 0; FOR(i,1,9) if (req[0] & (1<<i)) { ret = ret*10 + i; if ((req[0]&1) && !zero) { ret = ret*10; zero = 1; } } if ((req[0]&1) && !zero && pad) { ret = 10; } } else { ret = 1e18; FOR(d,0,9){ vector<int> req2; FOR(i,0,SZ(req)-1){ int cur = req[i] & (~(1<<((i+d)%10))); if (i == 0 || (i+d)/10 != (i-1+d)/10) { req2.push_back(cur); } else { req2.back() |= cur; } } if (req == req2) continue; // corner case ll a = solve(req2,1); ll cur = a*10 + d; if (cur == 0 && (req[0]&1) && pad) cur = 10; ret = min(ret,cur); } } return ret; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> K; vector<int> req; FOR(i,1,K){ int A; cin >> A; req.push_back(1<<A); } cout << solve(req,1) << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...