제출 #428450

#제출 시각아이디문제언어결과실행 시간메모리
428450markthitrin곤돌라 (IOI14_gondola)C++14
55 / 100
49 ms4624 KiB
#include "gondola.h" #include <map> #include <queue> class name { public: int value; int base; bool operator<(const name& b) const{ return value > b.value; } void operator=(const name& b){ value = b.value; base = b.base; } }put_in; int valid(int n, int inputSeq[]) { std::map<int,bool> g; int max = 0; int find_min = 2000000000; int min_pos = 0; for(int q = 0 ;q<n;q++){ if(g[inputSeq[q]]) return 0; g[inputSeq[q]] = true; if(find_min > inputSeq[q]){ find_min = inputSeq[q]; min_pos = q; } } if(find_min > n) return 1; int last_pos = min_pos - find_min; for(int q = min_pos;q < min_pos + n;q++){ if(max < inputSeq[q % n] && inputSeq[q % n] <= n){ if(inputSeq[q % n] - max != q - last_pos) return 0; max = inputSeq[q % n]; inputSeq[q % n] = 2000000000; last_pos = q; } } for(int q = 0 ;q<n;q++){ if(inputSeq[q] <= n) return 0; } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { std::priority_queue<name> g; int max = 0; for(int q = 0 ;q<n;q++){ max = std::max(max,gondolaSeq[q]); } int find_min = 2000000000; int min_pos; for(int q = 0 ;q<n;q++){ if(find_min > gondolaSeq[q]){ find_min = gondolaSeq[q]; min_pos = q; } } if(find_min > n) min_pos = 0; else { min_pos -= find_min - 1; if(min_pos < 0) min_pos += n; } for(int q = min_pos;q<min_pos + n;q++){ put_in.value = gondolaSeq[q % n]; put_in.base = q + 1 - min_pos; g.push(put_in); } int cnt = 0; int last_value = n; while(!g.empty()){ put_in = g.top(); g.pop(); if(put_in.value <= n) continue; replacementSeq[cnt++] = put_in.base; for(int q = last_value + 1;q<put_in.value;q++){ replacementSeq[cnt++] = q; } last_value = put_in.value; } return cnt; } //---------------------- int countReplacement(int n, int inputSeq[]) { return -3; }

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

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:70:17: warning: 'min_pos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   70 |         min_pos -= find_min - 1;
      |         ~~~~~~~~^~~~~~~~~~~~~~~
#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...