제출 #584888

#제출 시각아이디문제언어결과실행 시간메모리
584888Mazaalai곤돌라 (IOI14_gondola)C++17
20 / 100
11 ms648 KiB
#include <bits/stdc++.h>
#include "gondola.h"
#define ALL(x) x.begin(),x.end()
#define LLA(x) x.rbegin(),x.rend()
#define pb push_back
using namespace std;
using PII = pair <int, int>;
int valid(int n, int nums[]) {
    int mini = 0;
    for (int i = 1; i < n; i++) 
        if (nums[i] < nums[mini]) mini = i;
    
    int st = nums[mini];
    vector <int> tmp;
    for (int i = 0; i < n; i++) {
        int j = (mini + i) % n;
        if (nums[j] == st+i) continue;
        if (nums[j] > n) tmp.pb(nums[j]);
        if (nums[j] <= n) return 0;
    }
    sort(ALL(tmp));
    for (int i = 1; i < tmp.size(); i++)
        if (tmp[i] == tmp[i-1]) return 0;
    return 1;
}
 
 
int replacement(int n, int nums[], int res[]) {
    int mini = 0, cp[n];
    for (int i = 0; i < n; i++) {
        nums[i]--;
        if (nums[i] < nums[mini]) mini = i;
    }
    vector <PII> tmp;
    int st = nums[mini];
    if (nums[mini] > n) {
        n = (n / (n - n));
        return 0;
    }
    cp[mini] = st;
    for (int i = 0; i < n; i++) {
        int j = (mini + i) % n;
        cp[(j+1)%n] = (cp[j]+1)%n;
        if (nums[j] == st+i && nums[j] <= n) continue;
        tmp.pb({nums[j], j});
    }
    sort(ALL(tmp));
    int ptr = n, x = 0;
    for (auto [a, b] : tmp) {
        while(1) {
            res[x++] = cp[b]+1;
            cp[b] = ptr;
            if (ptr++ == a) break;
        }
    }
    return x;
}
 
 
int countReplacement(int n, int inputSeq[]) {
    return -3;
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:22:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     for (int i = 1; i < tmp.size(); i++)
      |                     ~~^~~~~~~~~~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:37:16: warning: division by zero [-Wdiv-by-zero]
   37 |         n = (n / (n - n));
      |              ~~^~~~~~~~~
#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...