제출 #162041

#제출 시각아이디문제언어결과실행 시간메모리
162041oolimryGondola (IOI14_gondola)C++14
90 / 100
1071 ms5368 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; long long mod = 1000000009; int valid(int n, int arr[]) { set<int> sset; for(int i = 0;i < n;i++){ sset.insert(arr[i]); } if(sset.size() != n) return 0; int anchor = -1; for(int i = 0;i < n;i++){ if(arr[i] <= n){ anchor = (arr[i] - i + n) % n; break; } } if(anchor == -1) return 1; for(int i = 0;i < n;i++){ if(arr[i] <= n){ if(arr[i] % n != (anchor + i) % n){ return 0; } } } return 1; } int replacement(int n, int arr[], int replacementSeq[]) { int anchor = 0; int ori[n]; map<int,int> m; set<int> s; for(int i = 0;i < n;i++){ if(arr[i] <= n){ anchor = (arr[i] - i + n) % n; break; } } int maxv = 0; int maxpos = 0; for(int i = 0;i < n;i++){ ori[i] = (anchor+i) % n; if(ori[i] == 0) ori[i] = n; if(arr[i] > maxv){ maxv = arr[i]; maxpos = i; } if(arr[i] > n){ m[arr[i]] = i; } } int cnt = 0; for(int r = n+1;r <= maxv;r++){ int rindex = 0; if(m.find(r) == m.end()){ rindex = maxpos; } else{ rindex = m[r]; } replacementSeq[cnt] = ori[rindex]; ori[rindex] = r; cnt++; } return cnt; } int countReplacement(int n, int arr[]) { if(!valid(n,arr)) return 0; long long ans = 1; int maxv = 0; int freee = n; set<int> s; bool has = true; for(int i = 0;i < n;i++){ maxv = max(maxv, arr[i]); if(arr[i] <= n){ freee--; has = false; } else{ s.insert(arr[i]); } } for(int r = n+1;r <= maxv;r++){ if(s.find(r) != s.end()){ freee--; } else{ ans *= freee; ans %= mod; } } if(has){ ans *= n; ans %= mod; } return ans; }

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

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:10:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if(sset.size() != n) return 0;
     ~~~~~~~~~~~~^~~~
#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...