제출 #842857

#제출 시각아이디문제언어결과실행 시간메모리
842857Pacybwoah곤돌라 (IOI14_gondola)C++17
100 / 100
25 ms3168 KiB
#include<algorithm> #include<vector> #include<utility> #include<iostream> #include"gondola.h" #define ll long long using namespace std; const ll mod=1e9+9; int valid(int n, int inp[]) { vector<int> vec; for(int i=0;i<n;i++) vec.push_back(inp[i]); sort(vec.begin(),vec.end()); if(unique(vec.begin(),vec.end())-vec.begin()!=n) return 0; int first=-1; for(int i=0;i<n;i++){ if(inp[i]<=n){ first=i; break; } } if(first==-1) return 1; bool flag=1; for(int i=0;i<n;i++){ if(inp[i]!=(inp[first]+i-first-1+n)%n+1&&inp[i]<=n){ flag=0; break; } } return flag; } //---------------------- int replacement(int n, int inp[], int ans[]) { int first=-1,fnum; vector<pair<int,int> > repl; for(int i=0;i<n;i++){ if(inp[i]<=n){ first=i; fnum=inp[i]; } else repl.push_back(make_pair(inp[i],i)); } if(first==-1) first=0,fnum=1; sort(repl.begin(),repl.end()); if(repl.size()==0) return 0; int cnt=0,last=n+1; for(auto x:repl){ ans[cnt++]=(fnum+x.second-first-1+n)%n+1; for(int i=last;i<x.first;i++) ans[cnt++]=i; last=x.first+1; } return cnt; } //---------------------- ll power(ll a,ll b){ if(b==0) return 1; if(b&1) return power(a,b-1)*a%mod; ll tmp=power(a,b/2); return tmp*tmp%mod; } int countReplacement(int n, int inp[]) { if(valid(n,inp)==0) return 0; ll ans=1; int first=-1,fnum; vector<pair<int,int> > repl; for(int i=0;i<n;i++){ if(inp[i]<=n){ first=i; fnum=inp[i]; } else repl.push_back(make_pair(inp[i],i)); } sort(repl.begin(),repl.end()); if(repl.size()==0) return 1; ll last=n,cnt=repl.size(); for(auto x:repl){ ans=ans*power(cnt--,x.first-last-1)%mod; //cout<<ans<<" "<<cnt+1<<" "<<x.first-last-1<<"\n"; last=x.first; } if(first==-1) ans=ans*(ll)n%mod; return ans; }

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

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:71:18: warning: variable 'fnum' set but not used [-Wunused-but-set-variable]
   71 |     int first=-1,fnum;
      |                  ^~~~
#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...