답안 #136227

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
136227 2019-07-25T04:15:10 Z vince 곤돌라 (IOI14_gondola) C++14
컴파일 오류
0 ms 0 KB
#include "gondola.h"
#include <set>
#include <stdio.h>
using namespace std;

int valid(int n, int inputSeq[])
{
    return -1;
    set<int> st;
    int num = -1;
    for(int i = 0; i < n; i++)
    {
        st.insert(inputSeq[i]);
        int idx = i%n;
        if(inputSeq[idx] <= n && num == -1)
            num = inputSeq[idx];
        
        if(inputSeq[idx] <= n & num != inputSeq[idx])
            return 0;
        
        if(num != -1)
        {
            num++;
            if(num == n+1)
                num -= n;
        }
    }
    return st.size() == n;
}

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

bool ada[250003];
int A[250003];
int pos[250003];
int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
    memset(pos, -1, sizeof pos);
    int mx = 0;
    for(int i = 0; i < n; i++)
    {
        A[i] = gondolaSeq[i];
        mx = max(mx, A[i]);
        ada[A[i]] = 1;
        pos[A[i]] = i;
    }
    if(A[0] > n)
    {
        for(int i = 0; i < n; i++)
            A[i] = i+1;
    }
    
    for(int i = 1; i < 2*n; i++)
    {
        if(A[(i-1)%n] <= n)
            A[i%n] = A[(i-1)%n]+1;
        
        if(A[i%n] == n+1) A[i%n] = 1;
    }
    int sz = 0;
    for(int i = n+1; i <= mx; i++)
    {
//        printf("%d %d\n", i, pos[i]);
        if(pos[i] == -1)
            replacementSeq[sz++] = A[pos[mx]],
            A[pos[mx]] = i;
        else
            replacementSeq[sz++] = A[pos[i]],
            A[pos[i]] = i;
    }

    
//    for(int i = 0; i < n; i++)
//        printf("%d ", A[i]);
//    printf("\n");
    
    
    return sz;
}

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

int countReplacement(int n, int inputSeq[])
{
  return -3;
}

Compilation message

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:18:26: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
         if(inputSeq[idx] <= n & num != inputSeq[idx])
            ~~~~~~~~~~~~~~^~~~
gondola.cpp:28:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     return st.size() == n;
            ~~~~~~~~~~^~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:38:5: error: 'memset' was not declared in this scope
     memset(pos, -1, sizeof pos);
     ^~~~~~
gondola.cpp:38:5: note: suggested alternative: 'fmemopen'
     memset(pos, -1, sizeof pos);
     ^~~~~~
     fmemopen