제출 #396808

#제출 시각아이디문제언어결과실행 시간메모리
396808ly20Gondola (IOI14_gondola)C++17
55 / 100
49 ms5084 KiB
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
int valid(int n, int seq[])
{
    bool vl = true;
    int id0 = n;
    map <int, int> freq;
    for(int i = 0; i < n; i++) {
        freq[seq[i]]++;
        if(freq[seq[i]] > 1) vl = false;
        if(seq[i] > n) continue;
        if(id0 == n) {
            id0 = (seq[i] - i + n) % n;
        }
        else {
            if(id0 != (seq[i] - i + n) % n) vl = false;
        }
    }
    if(vl) return 1;
    else return 0;
}

//----------------------
int vor[112345];
int replacement(int n, int seq[], int resp[])
{
    int ch = 0;
    for(int i = 0; i < n; i++) {
        if(seq[i] <= n && ch == 0) {
            ch = 1;
            int at = i;
            int cur = seq[i] - 1;
            while(vor[at] == 0) {
                vor[at] = cur + 1;
                cur++;
                at++;
                cur %= n;
                at %= n;
            }
        }
    }
    if(ch == 0) {
        for(int i = 0; i < n; i++) {
            vor[i] = i + 1;
        }
    }
    vector <pair <int, int> > mx;
    for(int i = 0; i < n; i++) {
        if(seq[i] > n) mx.push_back(make_pair(seq[i], i));
    }
    sort(mx.begin(), mx.end());
    int fim = n + 1;
    vector <int> rs;
    for(int i = 0; i < mx.size(); i++) {
        while(fim <= mx[i].first) {
            int id = mx[i].second;
            rs.push_back(vor[id]);
            vor[id] = fim;
            fim++;
        }
    }
    for(int i = 0; i < rs.size(); i++) {
        resp[i] = rs[i];
    }
    return rs.size();
}

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

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

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

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:55:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |     for(int i = 0; i < mx.size(); i++) {
      |                    ~~^~~~~~~~~~~
gondola.cpp:63:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |     for(int i = 0; i < rs.size(); i++) {
      |                    ~~^~~~~~~~~~~
#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...