Submission #433777

#TimeUsernameProblemLanguageResultExecution timeMemory
433777medmdgGondola (IOI14_gondola)C++14
60 / 100
25 ms2032 KiB
#include<bits/stdc++.h> #include "gondola.h" #define ll long long using namespace std; int valid(int n, int inputSeq[]) { int h=1; for(int i=1;i<n;i++){ if(inputSeq[i]!=(inputSeq[i-1]%n+1)) h=0; } return h; } int replacement(int n, int gs[], int rs[]) { vector<pair<ll,ll> > fi(n); fi[0]=make_pair(-1,-1); for(int i=0;i<n;i++){ if(gs[i]<=n){ for(int j=i;j<i+n;j++){ fi[j%n]=make_pair(-gs[j%n],(gs[i]-1+(j-i))%n+1); } break; } } ll pt=0; if(fi[0].second==-1) for(int i=0;i<n;i++){ fi[i]=make_pair(-gs[i],i+1); } sort(fi.begin(),fi.end()); ll ind=n+1; while(fi.size()){ ll k=fi.size()-1; while(ind<=-fi[k].first){ rs[pt]=fi[k].second; fi[k].second=ind; ind++; pt++; } fi.pop_back(); } return pt; } const ll M=1000000007; ll exp(ll a, ll b){ ll val=1; ll cur=1; while(b){ cur*=a; cur%=M; if(b&1) val*=cur; b/=2; val%=M; } return val; } //---------------------- int countReplacement(int n, int gs[]) { ll ans=1; bool h; vector<pair<ll,ll> > fi(n); fi[0]=make_pair(-1,-1); for(int i=0;i<n;i++){ if(gs[i]<=n){ for(int j=i;j<i+n;j++){ fi[j%n]=make_pair(-gs[j%n],(gs[i]-1+(j-i))%n+1); } break; } } ll pt=0; h=(fi[0].second==-1); if(fi[0].second==-1) for(int i=0;i<n;i++){ fi[i]=make_pair(-gs[i],i+1); } sort(fi.begin(),fi.end()); ll ind=n+1;ll rest=n; while(fi.size()){ ll k=fi.size()-1; if(ind>=-fi[k].first){ if(ind==fi[k].first) ind++; fi.pop_back(); rest--; continue; } ll t=(-fi[k].first-ind); ans*=exp(rest,t); ind=-fi[k].first+1; ans%=M; } if(h) ans*=n; ans%=M; return ans; }

Compilation message (stderr)

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:98:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   98 |   if(h)
      |   ^~
gondola.cpp:100:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
  100 |     ans%=M;
      |     ^~~
gondola.cpp:76:6: warning: unused variable 'pt' [-Wunused-variable]
   76 |   ll pt=0;
      |      ^~
#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...