Submission #900274

#TimeUsernameProblemLanguageResultExecution timeMemory
900274Darren0724Gondola (IOI14_gondola)C++17
75 / 100
15 ms2396 KiB
#include "gondola.h" #include<bits/stdc++.h> //#include "grader.cpp" using namespace std; const int INF=1e9; const int mod=1e9+9; long long pw(long long a,int b){ long long ans=1; while(b){ if(b&1){ ans=ans*a%mod; } a=a*a%mod; b>>=1; } return ans; } int valid(int n, int v[]){ int mn=INF,idx=-1; vector<int> a(300000); for(int i=0;i<n;i++){ a[v[i]]++; if(a[v[i]]>1){ return 0; } if(v[i]<mn){ idx=i; mn=v[i]; } } if(mn>n){ return 1; } for(int j=0;j<n;j++){ int i=(j+idx)%n; if(v[i]<=n){ if(v[i]!=mn+j){ return 0; } } } return 1; } //---------------------- int replacement(int n, int v[], int ans[]){ int mn=INF,idx=0,mx=-1; vector<int> a(300000,-1); for(int i=0;i<n;i++){ a[v[i]]=i; if(v[i]<mn){ idx=i; mn=v[i]; } } vector<int> ori(n); if(mn>n){ idx=0,mn=1; } for(int i=0;i<n;i++){ ori[(idx+i)%n]=mn; mn++; if(mn>n){ mn=1; } } int j=n+1,ptr=0; for(int i=n+1;i<300000;i++){ if(a[i]!=-1){ ans[ptr]=ori[a[i]]; ptr++; while(j<i){ ans[ptr]=j; j++; ptr++; } j++; } } return ptr; } //---------------------- int countReplacement(int n, int v[]){ if(!valid(n,v)){ return 0; } vector<int> a; for(int i=0;i<n;i++){ if(v[i]>n){ a.push_back(v[i]); } } sort(a.begin(),a.end()); long long ans=1; int sz=a.size(); int last=n; for(int i=0;i<sz;i++){ int t=a[i]-last-1; ans=ans*pw((sz-i),t); ans%=mod; last=a[i]; } return ans; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:48:19: warning: unused variable 'mx' [-Wunused-variable]
   48 |  int mn=INF,idx=0,mx=-1;
      |                   ^~
#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...