| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1337749 | alexdd | Fortune Telling 3 (JOI25_fortune3) | C++20 | 299 ms | 824 KiB |
#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;
void Anna(int N)
{
int prec = -1;
int curpoz = 0, cnt1 = 0, cnt0 = 0;
int endgame = 0, puse1 = 0, puse0 = 0;
for(int pas=1;pas<=N;pas++)
{
int val = DrawCard(prec);
prec = -1;
if(pas >= N - 10 + 1)//endgame
{
if(pas == N - 10 + 1)
{
if(cnt0 >= 10 && cnt1 >= 10)
{
endgame = 1;
}
else if(cnt0 < 10)
{
assert(cnt1 >= 10);
endgame = 2;
}
else if(cnt1 < 10)
{
assert(cnt0 >= 10);
endgame = 3;
}
else
assert(0);
}
if(endgame == 1)
{
int b = pas - (N - 10 + 1);
if(val == 1)
{
if((1<<b)&cnt1)
{
prec = puse1 + b + 1;
}
else
{
prec = 0;
}
puse1++;
}
else
{
if((1<<b)&cnt1)
{
prec = (puse1 + 10) + puse0 + b + 1;
}
else
{
prec = puse1 + 10;
}
puse0++;
}
}
else if(endgame == 2)
{
if(val == 1)
prec = curpoz;
}
else if(endgame == 3)
{
if(val == 0)
prec = 0;
}
}
else
{
if(val == 1)
{
cnt1++;
if(cnt1 <= 10)
prec = curpoz;
}
else
{
cnt0++;
if(cnt0 <= 10)
prec = 0;
}
}
if(prec != -1)
curpoz++;
}
DrawCard(prec);
}#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;
int Bruno(int N, int L, std::vector<int> C)
{
//for(int i=0;i<L;i++) cout<<C[i]<<" "; cout<<"\n";
if(L < 30)//special endgame
{
int cnt0 = 0, cnt1 = 0;
for(int i=0;i<L;i++)
{
if(C[i] == 1)
cnt1++;
else
cnt0++;
}
if(cnt0 < 10)
{
assert(cnt1 >= 10);
int tot0 = cnt0 + (10 - (cnt1 - 10));
return N - tot0;
}
else
{
assert(cnt0 >= 10);
int tot1 = cnt1 + (10 - (cnt0 - 10));
return tot1;
}
}
else
{
vector<int> isfixed(L+2, -1);
int aux = 0;
for(int i=0;i<L;i++)
{
if(C[i] == 0)
{
aux++;
if(aux <= 10)
isfixed[i] = aux - 1;
}
}
aux = 0;
for(int i=L-1;i>=0;i--)
{
if(C[i] == 1)
{
aux++;
if(aux <= 10)
isfixed[i] = 10 - aux;
}
}
int mask = 0;
for(int i=0;i+1<L;i++)
{
if(isfixed[i] != -1 && isfixed[i+1] == -1 && C[i] != C[i+1])
{
assert((mask & (1<<isfixed[i])) == 0);
mask += (1<<(isfixed[i]));
}
}
for(int i=0;i<L;i++)
if(isfixed[i] == -1 && C[i] == 1)
mask++;
return mask;
}
}컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
