이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "gondola.h"
#include <bits/stdc++.h>
//#include "grader.cpp"
using namespace std ;
int valid(int n, int arr[])
{
int st = -1;
for(int i = 0 ; i < n ; ++i)
{
if(arr[i] <= n)
{
st = i ;
break ;
}
}
map<int , int>mp ;
for(int i = 0 ; i < n ; ++i)
{
if(mp[arr[i]] > 0)
return 0 ;
mp[arr[i]]++ ;
}
if(st == -1)
return 1 ;
int idx = st , cnt = 0;
while(true)
{
idx++ ;
idx %= n ;
cnt++ ;
if(idx == st)
break ;
if(arr[idx] <= n)
continue ;
arr[idx] = (arr[st] + cnt) % n ;
if(arr[idx] == 0)
arr[idx] = n ;
}
idx = st , cnt = 0 ;
while(true)
{
idx++ ;
idx %= n ;
cnt++ ;
if(idx == st)
break ;
int x = (arr[st] + cnt) % n ;
if(x == 0)
x = n ;
if(x != arr[idx] && arr[idx] <= n)
return 0 ;
}
return 1;
}
//----------------------
int replacement(int n, int arr[], int replacementSeq[])
{
int st = -1 , MAX = *max_element(arr , arr + n);
map<int , int>mp ;
for(int i = 0 ; i < n ; ++i)
mp[arr[i]] = 1 ;
for(int i = 0 ; i < n ; ++i)
{
if(arr[i] <= n)
{
st = i ;
break ;
}
}
vector< pair<int , int> >vp ;
if(st == -1)
{
for(int i = 0 ; i < n ; ++i)
vp.push_back({arr[i] , i+1}) ;
}
else
{
int idx = st , cnt = 0;
while(true)
{
idx++ ;
idx %= n ;
cnt++ ;
if(idx == st)
break ;
if(arr[idx] <= n)
continue ;
int x = (arr[st] + cnt) % n ;
if(x == 0)
x = n ;
vp.push_back({arr[idx] , x}) ;
}
}
sort(vp.begin() , vp.end()) ;
int ans = 0 , last = n+1;
for(int i = 0 ; i < vp.size() ; ++i)
{
replacementSeq[ans] = vp[i].second ;
ans++ ;
for(int j = last ; j < vp[i].first ; ++j)
{
replacementSeq[ans] = j ;
ans++ ;
}
last = vp[i].first + 1 ;
}
return ans ;
}
//----------------------
int countReplacement(int n, int arr[])
{
if(!valid(n , arr))
return 0 ;
int a = 0 , b = 0 , cnt = 0;
for(int i = 0 ; i < n ; ++i)
{
if(arr[i] > n)
cnt++ ;
if(arr[i] == n+2)
a = 1 ;
if(arr[i] == n+3)
b = 1 ;
}
if(cnt == n)
{
if(n == 1 || n == 3)
return 1 ;
return 2 ;
}
if(a && b)
return 2 ;
return 1 ;
}
컴파일 시 표준 에러 (stderr) 메시지
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:99:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0 ; i < vp.size() ; ++i)
~~^~~~~~~~~~~
gondola.cpp:61:16: warning: unused variable 'MAX' [-Wunused-variable]
int st = -1 , MAX = *max_element(arr , arr + n);
^~~
# | 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... |