Submission #294285

# Submission time Handle Problem Language Result Execution time Memory
294285 2020-09-08T18:54:21 Z Badrangiikh Gondola (IOI14_gondola) C++14
Compilation error
0 ms 0 KB
#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 ] ;
    zer [ 0 ] = s1 ;
    for ( int i = 1 ; i <= 30 ; i ++ ) {
        zer [ i ] = zer [ i - 1 ] * zer [ i - 1 ] ;
        zer [ i ] %= mod ;
    }
    long long s3 = 1 ;
    for ( int i = 0 ; i <= 30 ; i ++ ) {
        if ( s2 % 2 == 1 ) {
            s3 *= zer [ i ] ;
            s3 %= mod ;
        }
        s2 /= 2 ;
    }
    return s3 ;
}

long long countReplacement(int n, int inputSeq[]) {
  long long ans , mod ;
  int x , y , z , maxx , minn , indx ;
  vector < int > ch , vec ;
  vector < pair < int , int > > hc , vc ;  
  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 ] [ i ] ) ;
    }
    if ( minn <= n ) {
        for ( int i = ( n + indx - minn ) % n + 1 ; i <= ( n + indx - minn ) % n + n ; i ++ ) {
            vc . push_back ( { inputSeq [ i ] [ i % n ] , i - ( ( n + indx - minn ) % n + 1 ) } ) ;
        }
    }
    else {
        for ( int i = 0 ; i < n ; i ++ ) {
            vc . push_back ( { inputSeq [ i ] , i } ) ;
        }
    }
    sort ( vc . begin ( ) , vc . end ( ) ) ;
    mod = 1000000009 ;
    for ( int i = 0 ; i < n ; i ++ ) {
        if ( vc [ i ] . first != i + 1 ) {
            x = i + 1 ;
            y = n - i ;
            break ;
        }
    }
    ans = 1 ;
    for ( int i = 0 ; i < n ; i ++ ) {
        if ( vc [ i ] . first == i + 1 ) {
            continue ;
        }
        z = vc [ i ] . first - x ;
        ans *= ( zeregt ( y , z ) % mod ) ;
        ans %= mod ;
        x = vc [ i ] . first + 1 ;
        y -- ;
    }
    return ans ;
}

Compilation message

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 'long long int zeregt(int, int)':
gondola.cpp:69:22: error: 'mod' was not declared in this scope; did you mean 'modf'?
   69 |         zer [ i ] %= mod ;
      |                      ^~~
      |                      modf
gondola.cpp:75:19: error: 'mod' was not declared in this scope; did you mean 'modf'?
   75 |             s3 %= mod ;
      |                   ^~~
      |                   modf
gondola.cpp: At global scope:
gondola.cpp:82:11: error: ambiguating new declaration of 'long long int countReplacement(int, int*)'
   82 | long long countReplacement(int n, int inputSeq[]) {
      |           ^~~~~~~~~~~~~~~~
In file included from gondola.cpp:2:
gondola.h:12:5: note: old declaration 'int countReplacement(int, int*)'
   12 | int countReplacement(int n, int inputSeq[]);
      |     ^~~~~~~~~~~~~~~~
gondola.cpp: In function 'long long int countReplacement(int, int*)':
gondola.cpp:94:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   94 |     for ( int i = 1 ; i < ch . size ( ) ; i ++ ) {
      |                       ~~^~~~~~~~~~~~~~~
gondola.cpp:100: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]
  100 |     for ( int i = 1 ; i < hc . size ( ) ; i ++ ) {
      |                       ~~^~~~~~~~~~~~~~~
gondola.cpp:111:48: error: invalid types 'int[int]' for array subscript
  111 |         maxx = max ( maxx , inputSeq [ i ] [ i ] ) ;
      |                                                ^
gondola.cpp:115:55: error: invalid types 'int[int]' for array subscript
  115 |             vc . push_back ( { inputSeq [ i ] [ i % n ] , i - ( ( n + indx - minn ) % n + 1 ) } ) ;
      |                                                       ^
gondola.cpp:115:97: error: no matching function for call to 'std::vector<std::pair<int, int> >::push_back(<brace-enclosed initializer list>)'
  115 |             vc . push_back ( { inputSeq [ i ] [ i % n ] , i - ( ( n + indx - minn ) % n + 1 ) } ) ;
      |                                                                                                 ^
In file included from /usr/include/c++/9/vector:67,
                 from /usr/include/c++/9/queue:61,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:86,
                 from gondola.cpp:1:
/usr/include/c++/9/bits/stl_vector.h:1184:7: note: candidate: 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::pair<int, int>; _Alloc = std::allocator<std::pair<int, int> >; std::vector<_Tp, _Alloc>::value_type = std::pair<int, int>]'
 1184 |       push_back(const value_type& __x)
      |       ^~~~~~~~~
/usr/include/c++/9/bits/stl_vector.h:1184:35: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<int, int>&'}
 1184 |       push_back(const value_type& __x)
      |                 ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_vector.h:1200:7: note: candidate: 'void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = std::pair<int, int>; _Alloc = std::allocator<std::pair<int, int> >; std::vector<_Tp, _Alloc>::value_type = std::pair<int, int>]'
 1200 |       push_back(value_type&& __x)
      |       ^~~~~~~~~
/usr/include/c++/9/bits/stl_vector.h:1200:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::vector<std::pair<int, int> >::value_type&&' {aka 'std::pair<int, int>&&'}
 1200 |       push_back(value_type&& __x)
      |                 ~~~~~~~~~~~~~^~~