# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
448664 | vanic | 질문 (CEOI14_question_grader) | C++14 | 3655 ms | 24064 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <vector>
#include <algorithm>
using namespace std;
int fact[13];
void precompute(){
fact[0]=1;
for(int i=1; i<13; i++){
fact[i]=fact[i-1]*i;
}
}
int povrh(int a, int b){
return fact[a]/(fact[b]*fact[a-b]);
}
vector < int > radi(int x){
vector < int > v;
int ost=6;
for(int i=1; i<=12; i++){
if(!ost){
break;
}
if(x>=povrh(12-i, ost-1)){
x-=povrh(12-i, ost-1);
}
else{
v.push_back(i);
ost--;
}
}
return v;
}
int encode (int n, int x, int y) {
precompute();
vector < int > s1, s2;
s1=radi(x);
s2=radi(y);
while(!s2.empty()){
if(find(s1.begin(), s1.end(), s2.back())!=s1.end()){
s1.erase(find(s1.begin(), s1.end(), s2.back()));
}
s2.pop_back();
}
return s1.back();
}
#include <vector>
#include <algorithm>
using namespace std;
int fact[13];
void precompute(){
fact[0]=1;
for(int i=1; i<13; i++){
fact[i]=fact[i-1]*i;
}
}
int povrh(int a, int b){
return fact[a]/(fact[b]*fact[a-b]);
}
vector < int > radi(int x){
vector < int > v;
int ost=6;
for(int i=1; i<=12; i++){
if(!ost){
break;
}
if(x>=povrh(12-i, ost-1)){
x-=povrh(12-i, ost-1);
}
else{
v.push_back(i);
ost--;
}
}
return v;
}
int decode (int n, int q, int h) {
precompute();
vector < int > s1=radi(q);
if(find(s1.begin(), s1.end(), h)!=s1.end()){
return 1;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |