제출 #291341

#제출 시각아이디문제언어결과실행 시간메모리
291341georgerapeanu곤돌라 (IOI14_gondola)C++11
25 / 100
16 ms1184 KiB
#include "gondola.h"
#include <cstdio>
#include <algorithm>

using namespace std;

inline int get_in_range(int st,int dr,int val){
    int tmp = (val - st) % (dr - st + 1);

    if(tmp < 0){
        tmp += (dr - st + 1);
    }

    return tmp + st;
}

int stuff[250005];

int valid(int n, int inputSeq[])
{
    int pos = -1;
    for(int i = 0;i < n;i++){
        if(inputSeq[i] <= n){
            pos = i;
        }
        stuff[inputSeq[i]]++;
        if(stuff[inputSeq[i]] > 1){
            return 0;
        }
    }

    for(int i = 0;i < n;i++){
        if(inputSeq[i] <= n && inputSeq[i] != get_in_range(1,n,inputSeq[pos] + i - pos)){
            return 0;
        }
    }

    return 1;
}

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

int replacement(int n, int gondolaSeq[], int replacementSeq[])
{

    int ma = 0,ma_pos;
    int pos = -1;

    for(int i = 0;i < n;i++){
        stuff[gondolaSeq[i]] = i;
        ma = max(ma,gondolaSeq[i]);
        if(ma == gondolaSeq[i]){
            ma_pos = i;
        }
        if(gondolaSeq[i] <= n){
            pos = i;
        }
    }

    if(pos == -1){
        pos = 0;
        gondolaSeq[pos] = 1;
    }

    for(int i = 0;i < n;i++){
        gondolaSeq[i] = get_in_range(1,n,gondolaSeq[pos] + i - pos);
    }

    int len = 0;

    for(int i = n + 1;i <= ma;i++){
        if(stuff[i] == 0){
            replacementSeq[len++] = gondolaSeq[ma_pos];
            gondolaSeq[ma_pos] = i;
        }
        else{
           replacementSeq[len++] = gondolaSeq[stuff[i]];
           gondolaSeq[stuff[i]] = i;
        }
    }

    return len;
}

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

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

컴파일 시 표준 에러 (stderr) 메시지

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:73:48: warning: 'ma_pos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   73 |             replacementSeq[len++] = gondolaSeq[ma_pos];
      |                                                ^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...