제출 #428262

#제출 시각아이디문제언어결과실행 시간메모리
428262Dakto곤돌라 (IOI14_gondola)C++17
100 / 100
95 ms6084 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; int valid(int n, int inputSeq[]) { int begind=-1; map<int,int> m; for(int i=0; i<n; i++){ if(m[inputSeq[i]]) return 0; m[inputSeq[i]]++; if(inputSeq[i]<=n){ if(begind==-1){ begind=(n+i-inputSeq[i]+1)%n; } else if((n+i-begind)%n+1!=inputSeq[i]) return 0; } } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int begind=0; map<int,int> m; for(int i=0; i<n; i++){ if(gondolaSeq[i]>n){ m[gondolaSeq[i]]=i; } else begind=(n+i-gondolaSeq[i]+1)%n; } int c=n+1; for(auto i:m){ int curr=(n+i.second-begind)%n+1; while(curr!=i.first){ replacementSeq[c-n-1]=curr; curr=c; c++; } } return c-n-1; } //---------------------- const int mod=1e9+9; int ipow(long long b,long long p){ long long res=1; while(p){ if(p&1) res=(res*b)%mod; b=(b*b)%mod; p>>=1; } return res; } int countReplacement(int n, int inputSeq[]) { if(!valid(n,inputSeq)) return 0; vector<int> v={n}; bool setpos=0; for(int i=0; i<n; i++){ if(inputSeq[i]>n){ v.push_back(inputSeq[i]); } else setpos=1; } sort(v.begin(),v.end()); long long res=setpos?1:n; for(int i=1; i<v.size(); i++){ res=(res*ipow(v.size()-i,v[i]-v[i-1]-1))%mod; } return res; }

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

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:75:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |     for(int i=1; i<v.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...