이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1000000009;
bool have[250001];
int head[250001];
int valid(int n, int s[]) {
bool ans=true;
int sc=0;
for (int i=0; i<n; ++i) {
if (have[s[i]]) return 0;
have[s[i]]=true;
if (s[i]<=n && sc==0) sc=i;
}
if (!sc) return true;
int val=s[sc];
for (int i=sc+1; i<n; ++i) {
++val;
if (val>n) val-=n;
if (s[i]<=n && s[i]!=val) {
ans=false;
break;
}
}
return ans;
}
//----------------------
int replacement(int n, int s[], int ans[]) {
int mmax=0,hm,sc=0;
bool fix=false;
for (int i=0; i<n; ++i) {
mmax=max(mmax,s[i]);
if (s[i]<=n) {
fix=true;
if (sc==0) sc=i;
}
}
if (!fix) {
for (int i=0; i<n; ++i) {
head[s[i]]=i+1;
}
} else {
int val=s[sc];
for (int i=sc; i<n; ++i) {
head[s[i]]=val++;
if (val>n) val-=n;
}
for (int i=0; i<sc; ++i) {
head[s[i]]=val++;
if (val>n) val-=n;
}
}
hm=head[mmax];
int idx=0;
for (int i=n+1; i<mmax; ++i) {
if (!head[i]) {
ans[idx++]=hm;
hm=i;
} else {
ans[idx++]=head[i];
}
}
ans[idx]=hm;
return mmax-n;
}
//----------------------
int countReplacement(int n, int s[]) {
if (!valid(n,s)) return 0;
ll ans=1;
bool rot=false;
int cnt=n,mmax=0;
for (int i=0; i<n; ++i) {
have[s[i]]=true;
if (s[i]<=n) --cnt;
mmax=max(mmax,s[i]);
}
if (cnt==n) rot=true;
for (int i=n+1; i<=mmax; ++i) {
if (have[i]) --cnt;
else if (cnt) ans=(ans*cnt)%mod;
}
if (rot) {
for (int i=1; i<=n; ++i) ans=(ans*i)%mod;
}
return ans%mod;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |