답안 #73288

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
73288 2018-08-28T06:44:27 Z Batmend4 곤돌라 (IOI14_gondola) C++
컴파일 오류
0 ms 0 KB
#include "gondola.h"
#include <iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;

long long power( int x, int e ){
    long long _pos = x;
    long long _s = 1;
    while( e ){
        int a = e % 2;
        if( a == 1 ){
            _s *= _pos;
            _s %= 1000000009;
        }
        _pos *= x;
        _pos %= 1000000009;
        e /= 2;
    }
    return _s;
}

int valid(int n, int inputSeq[])
{
    map< int, bool> m;
    bool lol = 1;
    int ind = -1;
    for( int i = 0 ; i < n ; i++ ){
        if( inputSeq[i] <= n ){
            lol = 0;
            ind = i;
        }
        if( inputSeq[i] > n ){
            if( m[inputSeq[i]] == 1 ) return 0;
            m[inputSeq[i]] = 1;
        }
    }
    if( lol == 1 ){
        return 1;
    }
    int ct[n + 5];
    int nn = n + inputSeq[ind] - 1 - ind;
    for( int i = 0 ; i < n ; i++ ){
        ct[(nn + i) % n] = inputSeq[i];
    }
    
    for( int i = 0 ; i < n ; i++ ){
        if( ct[i] <= n ){
            if( i != ct[i] - 1 ){
                return 0;
            }
        }
    }
    return 1;
}

//----------------------

int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
    int ind = -1;
    int ct[n + 5];
    vector< pair<int, int> >v;
    for( int i = 0 ; i < n ; i++ ){
        if( gondolaSeq[i] <= n ){
            ind = i;
        }
    }
    int nn = n + gondolaSeq[ind] - 1 - ind;
    for( int i = 0 ; i < n ; i++ ){
        ct[(nn + i) % n] = gondolaSeq[i];
    }
    for( int i = 0 ; i < n ; i++ ){
        v.push_back( make_pair(ct[i], i));
    }
    sort( v.begin(), v.end());
    
    int pos = 0;
    for( int i = 0 ; i < n ; i++ ){
        int ct1 = v[i].first;
        if( ct1 <= n ) continue;
        if( i == 0 ){
            replacementSeq[pos] = v[0].second + 1;
            pos++;
            for( int ii = n + 1 ; ii < v[0].first ; ii++ ){
                replacementSeq[pos] = ii;
                pos++;
            }
            continue;
        }
        if( v[i - 1].first <= n ){
            replacementSeq[pos] = v[i].second + 1;
            pos++;
            for( int ii = n + 1 ; ii < v[i].first ; ii++ ){
                replacementSeq[pos] = ii;
                pos++;
            }
            continue;
        }
        replacementSeq[pos] = v[i].second + 1;
        pos++;
        for( int ii = v[i-1].first + 1 ; ii < v[i].first ; ii++ ){
            replacementSeq[pos] = ii;
            pos++;
        }
        
    }
    return pos;
}

//----------------------

int countReplacement(int n, int inputSeq[])
{
    if( valid( n, inputSeq) != 1 ){
        return 0;
    }
    vector<int> v;
    bool lol = 1;
    bool fuck = 1;
    for( int i = 0 ; i < n ; i++ ){
        if( inputSeq[i] > n ) lol = 0;
        if( inputSeq[i] <= n ) fuck = 0;
        v.push_back(inputSeq[i]);
    }
    if( lol == 1 ) return 1;
    sort( v.begin(), v.end());
    
    long long s = 1;
    int pos = n + 1;
    for( int i = 0 ; i < n ; i++){
        if( v[i] <= n ) continue;
        s *= power( n - i, v[i] - pos );
        s %= 1000000009;
        pos = v[i] + 1;
    }
    if( fuck == 1 ){
        s *= n;
        n %= 1000000009;
    }
    return s;
}

Compilation message

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:77:5: error: 'sort' was not declared in this scope
     sort( v.begin(), v.end());
     ^~~~
gondola.cpp:77:5: note: suggested alternative: 'qsort'
     sort( v.begin(), v.end());
     ^~~~
     qsort
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:128:5: error: 'sort' was not declared in this scope
     sort( v.begin(), v.end());
     ^~~~
gondola.cpp:128:5: note: suggested alternative: 'qsort'
     sort( v.begin(), v.end());
     ^~~~
     qsort