# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
40452 | Pajaraja | Nice sequence (IZhO18_sequence) | C++14 | 669 ms | 27000 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
vector<int> g[200007];
int pv[200007],deg[200007],parc[200007];
bool provera(int s,int n,int m)
{
fill(deg,deg+s+1,0);
for(int i=0;i<=s;i++) g[i].clear();
for(int i=n;i<=s;i++)
{
g[i].push_back(i-n);
deg[i-n]++;
}
for(int i=m;i<=s;i++)
{
g[i-m].push_back(i);
deg[i]++;
}
queue<int> q;
for(int i=0;i<=s;i++) if(deg[i]==0) q.push(i);
int cnt=0;
while(!q.empty())
{
int u=q.front();
pv[u]=cnt++;
q.pop();
for(int i=0;i<g[u].size();i++)
{
deg[g[u][i]]--;
if(deg[g[u][i]]==0) q.push(g[u][i]);
}
}
if(cnt<=s) return false;
return true;
}
int binarna(int l,int r,int n,int m)
{
if(l==r) return l;
int s=(l+r)/2;
if(!provera(s,n,m)) return binarna(l,s,n,m);
else return binarna(s+1,r,n,m);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int x=binarna(0,m+n+5,n,m);
printf("%d\n",x-1);
provera(x-1,n,m);
for(int i=1;i<x;i++) printf("%d ",pv[i]-pv[i-1]);
printf("\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... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |