제출 #138741

#제출 시각아이디문제언어결과실행 시간메모리
138741zoooma13곤돌라 (IOI14_gondola)C++14
75 / 100
50 ms4644 KiB
#include "bits/stdc++.h" #include "gondola.h" using namespace std; int valid(int n, int inputSeq[]){ int mi_idx = min_element(inputSeq ,inputSeq+n)-inputSeq; set <int> ss; for(int i=0; i<n; i++) ss.insert(inputSeq[i]); if(ss.size() != n) return 0; if(inputSeq[mi_idx] >= n) return 1; int nxt = inputSeq[mi_idx]; for(int i=mi_idx; nxt<=n; i++){ if(inputSeq[i%n] != nxt && inputSeq[i%n] <= n) return 0; nxt++; } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { vector <pair<int ,int>> vii; int mi_idx = min_element(gondolaSeq ,gondolaSeq+n)-gondolaSeq; int nxt = gondolaSeq[mi_idx]; if(nxt > n) nxt = 1; for(int i=mi_idx; i<mi_idx+n; i++){ vii.push_back({gondolaSeq[i%n] ,nxt}); //cout << gondolaSeq[i%n] << ' ' << nxt << endl; nxt = (nxt == n ? 1 : nxt+1); } sort(vii.begin() ,vii.end()); nxt = n; vector <int> ret; for(auto&p : vii){ if(p.first <= n) continue; ret.push_back(p.second); for(nxt++; nxt != p.first; nxt++) ret.push_back(nxt); } for(int i=0; i<ret.size(); i++) replacementSeq[i] = ret[i]; return ret.size(); } //---------------------- const int mod = 1e9+9; int powmod(int a ,int p){ int x = 1; for( ; p; p>>=1){ if(p&1) x = 1LL*x*a%mod; a = 1LL*a*a%mod; } return x; } int countReplacement(int n, int inputSeq[]) { if(!valid(n ,inputSeq)) return 0; int mi_idx = min_element(inputSeq ,inputSeq+n)-inputSeq; int nxt = inputSeq[mi_idx]; if(nxt > n) nxt = 1; vector <int> to; for(int i=mi_idx; i<mi_idx+n; i++){ if(inputSeq[i%n] != nxt) to.push_back(inputSeq[i%n]); nxt = (nxt == n ? 1 : nxt+1); } sort(to.begin() ,to.end()); int ans = 1 ,to_ptr = 0 ,lst = n; for(int i:to){ ans = 1LL*ans*powmod(to.size()-to_ptr ,i-lst-1)%mod; lst = i; to_ptr++; } return ans; }

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

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:10:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(ss.size() != n)
        ~~~~~~~~~~^~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:47:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<ret.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...