제출 #1015345

#제출 시각아이디문제언어결과실행 시간메모리
1015345amirhoseinfar1385곤돌라 (IOI14_gondola)C++17
100 / 100
42 ms6084 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; int inf=1e9+5,mod=1e9+9; long long mypow(long long m,long long y){ if(y==0){ return 1; } long long p=mypow(m,(y>>1)); p*=p; p%=mod; if(y&1){ p*=m; p%=mod; } return p; } int fas(int u,int v,int n){ //cout<<u<<" "<<v<<" "<<(u-v+n+n)%n<<endl; return (u-v+n+n)%n; } int valid(int n, int inputSeq[]) { set<int>st; int wh=-1,mn=inf; for(int i=0;i<n;i++){ if(inputSeq[i]<mn){ wh=i; mn=inputSeq[i]; } if(st.count(inputSeq[i])==1){ return 0; } st.insert(inputSeq[i]); } int last=mn,lastwh=wh; for(int i=0;i<n;i++){ if(inputSeq[(i+wh)%n]<=n){ if(inputSeq[(i+wh)%n]!=(mn+i)){ return 0; } lastwh=(i+wh)%n; last=inputSeq[(i+wh)%n]; } } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { set<pair<int,int>>st; int wh=-1,mn=inf; for(int i=0;i<n;i++){ if(gondolaSeq[i]<mn){ wh=i; mn=gondolaSeq[i]; } } wh=wh-mn+1; while(wh<0){ wh+=n; } wh%=n; for(int i=0;i<n;i++){ st.insert(make_pair(gondolaSeq[(wh+i)%n],i+1)); } int now=n+1; vector<int>all(n+1); for(int i=1;i<=n;i++){ all[i]=i; } while((int)st.size()>0){ auto x=(*st.begin()); st.erase(x); while(now<=x.first){ replacementSeq[now-(n+1)]=all[x.second]; all[x.second]=now; now++; } } return (now-(n+1)); } //---------------------- int countReplacement(int n, int inputSeq[]) { if(valid(n,inputSeq)==0){ return 0; } vector<int>all; long long mn=inf; for(int i=0;i<n;i++){ inf=min(inf,inputSeq[i]); if(inputSeq[i]>n){ all.push_back(inputSeq[i]); } } all.push_back(n); sort(all.begin(),all.end()); long long mainres=1; for(int i=1;i<(int)all.size();i++){ // cout<<"salam: "<<i<<endl; mainres*=mypow((all.size()-i),all[i]-all[i-1]-1); mainres%=mod; // cout<<"by"<<endl; } if(inf>n){ mainres*=n; mainres%=mod; } return mainres; }

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

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:39:7: warning: variable 'last' set but not used [-Wunused-but-set-variable]
   39 |   int last=mn,lastwh=wh;
      |       ^~~~
gondola.cpp:39:15: warning: variable 'lastwh' set but not used [-Wunused-but-set-variable]
   39 |   int last=mn,lastwh=wh;
      |               ^~~~~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:97:13: warning: unused variable 'mn' [-Wunused-variable]
   97 |   long long mn=inf;
      |             ^~
#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...