제출 #799046

#제출 시각아이디문제언어결과실행 시간메모리
799046FatihSolak곤돌라 (IOI14_gondola)C++17
90 / 100
1089 ms4980 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; vector<int> get(int n,int inputSeq[]){ int pos = 0; for(int i = 0;i<n;i++){ if(inputSeq[i] <= n){ pos = (i + 1 - inputSeq[i] + n)%n; } } vector<int> ret; for(int i = pos;i < n;i++){ ret.push_back(inputSeq[i]); } for(int i = 0;i<pos;i++){ ret.push_back(inputSeq[i]); } return ret; } int valid(int n, int inputSeq[]){ vector<int> inp = get(n,inputSeq); set<int> s; for(int i = 0;i<n;i++){ s.insert(inp[i]); if(inp[i] <= n && inp[i] != i + 1){ return 0; } } if(s.size() != n) return 0; return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]){ vector<int> inp = get(n,gondolaSeq); map<int,int> mp; int maxi = 0; for(int i = 0;i<n;i++){ if(inp[i] > n){ mp[inp[i]] = i; if(inp[maxi] < inp[i]) maxi = i; } } int l = 0; int tmp = inp[maxi]; inp[maxi] = maxi + 1; for(int i = n + 1;i <= tmp;i++){ if(mp.count(i) && mp[i] != maxi){ replacementSeq[l++] = mp[i] + 1; } else{ replacementSeq[l++] = inp[maxi]; inp[maxi] = i; } } return l; } //---------------------- const int mod = 1e9 + 9; int countReplacement(int n, int inputSeq[]){ if(!valid(n,inputSeq)){ return 0; } vector<int> inp = get(n,inputSeq); int ans = 1; bool ok = 1; set<int> s; for(int i = 0;i<n;i++){ if(inp[i] <= n){ ok = 0; } else s.insert(inp[i]); } if(ok){ ans = (long long)ans * n % mod; } if(s.size()){ int cnt = s.size(); int num = *s.rbegin(); for(int i = n + 1;i<=num;i++){ if(s.count(i)){ cnt--; continue; } ans = (long long)ans * cnt % mod; } } return ans; }

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

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:29:14: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   29 |  if(s.size() != 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...