# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
982674 | canadavid1 | 수열 (BOI14_sequence) | C++14 | 82 ms | 2220 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
#include <bitset>
using digits = std::bitset<10>;
using u64 = unsigned long long;
u64 min_valid(std::vector<digits> v)
{
if(v.size()==0) return 0;
if(v.size()==1)
{
auto w = v[0];
u64 o = 0;
if(w.none()) return 0;
if(w.count()==1 && w[0]) return 10;
int i = 1;
while(!w[i]) i++;
o = i;
w[i] = 0;
if(w[0]) o *= 10;
for(int i = 1; i < 10; i++)
{
if(!w[i]) continue;
o *= 10;
o += i;
}
return o;
}
u64 min = (u64)-1;
for(u64 ls = 0; ls < 10; ls++)
{
std::vector<digits> n;
auto k = ls;
n.emplace_back();
for(int i = 0; i < v.size(); i++)
{
auto r = v[i];
r[k] = 0;
n.back() |= r;
if(++k==10)
{
k = 0;
n.emplace_back();
}
}
if(n.back().none()) n.pop_back();
if(n == v) continue;
auto a = min_valid(n);
min = std::min(10*a+ls,min);
}
return min;
}
int main()
{
int K;
std::cin >> K;
std::vector<digits> v(K);
for(auto& i : v) {int j; std::cin >> j; i[j]=1;}
std::cout << min_valid(v) << "\n";
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |