This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#include "gondola.h"
using namespace std;
int valid(int n, int inputSeq[]){
vector < pair < int , int > > vec ;
vector < int > vc ;
for ( int i = 0 ; i < n ; i ++ ) {
if ( inputSeq [ i ] <= n ) {
vec . push_back ( { inputSeq [ i ] , i } ) ;
}
vc . push_back ( inputSeq [ i ] ) ;
}
sort ( vc . begin ( ) , vc . end ( ) ) ;
for ( int i = 1 ; i < vc . size ( ) ; i ++ ) {
if ( vc [ i - 1 ] == vc [ i ] ) return 0 ;
}
sort ( vec . begin ( ) , vec . end ( ) ) ;
for ( int i = 1 ; i < vec . size ( ) ; i ++ ) {
if ( vec [ i ] . first - vec [ i - 1 ] . first != ( ( vec [ i ] . second - vec [ i - 1 ] . second ) % n + n ) % n ) {
return 0 ;
}
}
return 1 ;
}
int replacement(int n, int gondolaSeq[], int replacementSeq[]){
int maxx , minn , indx , x ;
vector < int > vec ;
vector < pair < int , int > > vc ;
minn = n + 1 ;
for ( int i = 0 ; i < n ; i ++ ) {
if ( minn > gondolaSeq [ i ] ) {
indx = i ;
minn = gondolaSeq [ i ] ;
}
maxx = max ( maxx , gondolaSeq [ i ] ) ;
}
if ( minn <= n ) {
for ( int i = ( n + indx - minn ) % n + 1 ; i <= ( n + indx - minn ) % n + n ; i ++ ) {
vc . push_back ( { gondolaSeq [ i % n ] , i - ( ( n + indx - minn ) % n + 1 ) } ) ;
}
}
else {
for ( int i = 0 ; i < n ; i ++ ) {
vc . push_back ( { gondolaSeq [ i ] , i } ) ;
}
}
sort ( vc . begin ( ) , vc . end ( ) ) ;
x = n + 1 ;
for ( int i = 0 ; i < vc . size ( ) ; i ++ ) {
if ( vc [ i ] . first == vc [ i ] . second + 1 ) continue ;
vec . push_back ( vc [ i ] . second + 1 ) ;
for ( int j = x ; j <= vc [ i ] . first - 1 ; j ++ ) {
vec . push_back ( j ) ;
}
x = vc [ i ] . first + 1 ;
}
for ( int i = 0 ; i < vec . size ( ) ; i ++ ) {
replacementSeq [ i ] = vec [ i ] ;
}
return maxx - n ;
}
long long zeregt ( int s1 , int s2 ) {
long long zer [ 45 ] ;
long long mod1 = 1e9+9 ;
zer [ 0 ] = s1 ;
for ( int i = 1 ; i <= 30 ; i ++ ) {
zer [ i ] = zer [ i - 1 ] * zer [ i - 1 ] ;
zer [ i ] %= mod1 ;
}
long long s3 = 1 ;
for ( int i = 0 ; i <= 30 ; i ++ ) {
if ( s2 % 2 == 1 ) {
s3 *= zer [ i ] ;
s3 %= mod1 ;
}
s2 /= 2 ;
}
return s3 ;
}
int countReplacement(int n, int inputSeq[]) {
long long ans , mod ;
int x , y , z , maxx , minn , indx ;
vector < int > ch , vec , vc ;
vector < pair < int , int > > hc ;
for ( int i = 0 ; i < n ; i ++ ) {
ch . push_back ( inputSeq [ i ] ) ;
if ( inputSeq [ i ] <= n ) {
hc . push_back ( { inputSeq [ i ] , i + 1 } ) ;
}
}
sort ( ch . begin ( ) , ch . end ( ) ) ;
for ( int i = 1 ; i < ch . size ( ) ; i ++ ) {
if ( ch [ i ] == ch [ i - 1 ] ) {
return 0 ;
}
}
sort ( hc . begin ( ) , hc . end ( ) ) ;
for ( int i = 1 ; i < hc . size ( ) ; i ++ ) {
if ( hc [ i ] . first - hc [ i - 1 ] . first != ( ( hc [ i ] . second - hc [ i - 1 ] . second ) % n + n ) % n ) {
return 0 ;
}
}
minn = n + 1 ;
for ( int i = 0 ; i < n ; i ++ ) {
if ( minn > inputSeq [ i ] ) {
indx = i ;
minn = inputSeq [ i ] ;
}
maxx = max ( maxx , inputSeq [ i ] ) ;
}
if ( minn <= n ) {
for ( int i = ( n + indx - minn ) % n + 1 ; i <= ( n + indx - minn ) % n + n ; i ++ ) {
vc . push_back ( inputSeq [ i % n ] ) ;
}
}
else {
for ( int i = 0 ; i < n ; i ++ ) {
vc . push_back ( inputSeq [ i ] ) ;
}
}
sort ( vc . begin ( ) , vc . end ( ) ) ;
mod = 1000000009 ;
for ( int i = 0 ; i < n ; i ++ ) {
if ( vc [ i ] != i + 1 ) {
x = n ;
y = n - i ;
break ;
}
}
ans = 1 ;
for ( int i = 0 ; i < n ; i ++ ) {
if ( vc [ i ] == i + 1 ) {
continue ;
}
z = vc [ i ] - x - 1 ;
ans *= ( zeregt ( y , z ) % mod ) ;
ans %= mod ;
x = vc [ i ] ;
y -- ;
}
x = ans ;
return x ;
}
Compilation message (stderr)
gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:15:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
15 | for ( int i = 1 ; i < vc . size ( ) ; i ++ ) {
| ~~^~~~~~~~~~~~~~~
gondola.cpp:19:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
19 | for ( int i = 1 ; i < vec . size ( ) ; i ++ ) {
| ~~^~~~~~~~~~~~~~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:50:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
50 | for ( int i = 0 ; i < vc . size ( ) ; i ++ ) {
| ~~^~~~~~~~~~~~~~~
gondola.cpp:58:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
58 | for ( int i = 0 ; i < vec . size ( ) ; i ++ ) {
| ~~^~~~~~~~~~~~~~~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:95:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
95 | for ( int i = 1 ; i < ch . size ( ) ; i ++ ) {
| ~~^~~~~~~~~~~~~~~
gondola.cpp:101:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
101 | for ( int i = 1 ; i < hc . size ( ) ; i ++ ) {
| ~~^~~~~~~~~~~~~~~
gondola.cpp:142:11: warning: 'y' may be used uninitialized in this function [-Wmaybe-uninitialized]
142 | y -- ;
| ~~^~
gondola.cpp:138:22: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]
138 | z = vc [ i ] - x - 1 ;
gondola.cpp:115:27: warning: 'indx' may be used uninitialized in this function [-Wmaybe-uninitialized]
115 | for ( int i = ( n + indx - minn ) % n + 1 ; i <= ( n + indx - minn ) % n + n ; i ++ ) {
| ~~^~~~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:39:27: warning: 'indx' may be used uninitialized in this function [-Wmaybe-uninitialized]
39 | for ( int i = ( n + indx - minn ) % n + 1 ; i <= ( n + indx - minn ) % n + n ; i ++ ) {
| ~~^~~~~~
# | 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... |