답안 #50529

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
50529 2018-06-11T10:45:40 Z mirbek01 곤돌라 (IOI14_gondola) C++17
25 / 100
31 ms 2164 KB
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;

const int N = 3e5 + 2;

int valid(int n, int inputSeq[])
{
      vector <pair <int, int> > v;
      for(int i = 0; i < n; i ++)
            if(inputSeq[i] <= n)
                  v.push_back({inputSeq[i], i + 1});
      sort(v.begin(), v.end());
      for(int i = 1; i < v.size(); i ++){
            int ab = v[i].first - v[i - 1].first, ds;
            if(v[i].second > v[i - 1].second){
                  ds = v[i].second - v[i - 1].second;
            } else {
                  ds = v[i].second + (n - v[i - 1].second);
            }
            if(ds != ab) return 0;
      }
      sort(inputSeq, inputSeq + n);
      for(int i = 1; i < n; i ++){
            if(inputSeq[i] == inputSeq[i - 1]) return 0;
      }
      return 1;
}

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

int used[N];

int replacement(int n, int gondolaSeq[], int rp[])
{
      int pos = -1, mx = 0, sz = 0, id;
      vector <int> d, v, nm(n);
      for(int i = 0; i < n; i ++){
            mx = max(mx, gondolaSeq[i]);
            used[gondolaSeq[i]] = 1;
            if(gondolaSeq[i] > n)
                  d.push_back(i);
            else
                 if(pos == -1) pos = gondolaSeq[i], id = i;
      }
      for(int i = 0; i < n; i ++){
            nm[id] = pos;
            pos ++;
            id ++;
            if(pos > n) pos = 1;
            if(id >= n) id = 0;
      }
      for(int i = n + 1; i <= mx; i ++){
            if(!used[i])
                  v.push_back(i);
      }
      if(pos == -1){
            rp[sz ++] = 1;
            for(int i = 0; i < v.size(); i ++){
                  rp[sz ++] = v[i];
            }
            rp[sz ++] = gondolaSeq[0];
            for(int i = 1; i < n; i ++){
                  rp[sz ++] = i + 1;
                  rp[sz ++] = gondolaSeq[i];
            }
      } else {
            for(int i = 0; i < d.size(); i ++){
                  int ps = nm[d[i]];
                  if(!i){
                        rp[sz ++] = ps;
                        for(int j = 0; j < v.size(); j ++){
                              rp[sz ++] = v[j];
                        }
                        rp[sz ++] = gondolaSeq[d[i]];
                  } else {
                        rp[sz ++] = ps;
                        rp[sz ++] = gondolaSeq[d[i]];
                  }
            }
      }
      return max(sz - 1, 0);
}

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

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

Compilation message

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:14:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int i = 1; i < v.size(); i ++){
                      ~~^~~~~~~~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:59:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int i = 0; i < v.size(); i ++){
                            ~~^~~~~~~~~~
gondola.cpp:68:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int i = 0; i < d.size(); i ++){
                            ~~^~~~~~~~~~
gondola.cpp:72:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                         for(int j = 0; j < v.size(); j ++){
                                        ~~^~~~~~~~~~
gondola.cpp:49:16: warning: 'id' may be used uninitialized in this function [-Wmaybe-uninitialized]
             id ++;
             ~~~^~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 380 KB Output is correct
2 Correct 2 ms 460 KB Output is correct
3 Correct 2 ms 492 KB Output is correct
4 Correct 2 ms 492 KB Output is correct
5 Correct 2 ms 496 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 496 KB Output is correct
2 Correct 2 ms 496 KB Output is correct
3 Correct 3 ms 548 KB Output is correct
4 Correct 2 ms 676 KB Output is correct
5 Correct 2 ms 676 KB Output is correct
6 Correct 14 ms 1332 KB Output is correct
7 Correct 23 ms 1968 KB Output is correct
8 Correct 20 ms 1992 KB Output is correct
9 Correct 11 ms 1992 KB Output is correct
10 Correct 31 ms 2060 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2060 KB Output is correct
2 Correct 2 ms 2060 KB Output is correct
3 Correct 2 ms 2060 KB Output is correct
4 Correct 2 ms 2060 KB Output is correct
5 Correct 2 ms 2060 KB Output is correct
6 Correct 15 ms 2060 KB Output is correct
7 Correct 23 ms 2060 KB Output is correct
8 Correct 18 ms 2164 KB Output is correct
9 Correct 9 ms 2164 KB Output is correct
10 Correct 28 ms 2164 KB Output is correct
11 Correct 2 ms 2164 KB Output is correct
12 Correct 2 ms 2164 KB Output is correct
13 Correct 8 ms 2164 KB Output is correct
14 Correct 2 ms 2164 KB Output is correct
15 Correct 21 ms 2164 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2164 KB Output is correct
2 Correct 2 ms 2164 KB Output is correct
3 Correct 2 ms 2164 KB Output is correct
4 Correct 2 ms 2164 KB Output is correct
5 Correct 2 ms 2164 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2164 KB Output is correct
2 Correct 2 ms 2164 KB Output is correct
3 Correct 2 ms 2164 KB Output is correct
4 Correct 2 ms 2164 KB Output is correct
5 Correct 2 ms 2164 KB Output is correct
6 Correct 2 ms 2164 KB Output is correct
7 Incorrect 3 ms 2164 KB Integer 977 violates the range [1, 975]
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 2164 KB Output is correct
2 Correct 2 ms 2164 KB Output is correct
3 Correct 2 ms 2164 KB Output is correct
4 Correct 2 ms 2164 KB Output is correct
5 Correct 2 ms 2164 KB Output is correct
6 Correct 2 ms 2164 KB Output is correct
7 Incorrect 2 ms 2164 KB Integer 977 violates the range [1, 975]
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2164 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2164 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2164 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2164 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -