Submission #162055

#TimeUsernameProblemLanguageResultExecution timeMemory
162055nafis_shifatGondola (IOI14_gondola)C++14
100 / 100
46 ms2276 KiB
#include "gondola.h" #include<bits/stdc++.h> #define pii pair<int,int> #define ll long long using namespace std; const ll mod=1e9+9; ll bigmod(ll a,ll b) { if(b==0)return 1; ll mid=b/2; ll c=bigmod(a,mid); if(b%2==0)return (c*c)%mod; c=(c*c)%mod; return (a*c)%mod; } int valid(int n, int inputSeq[]) { vector<int> b; int st=-1; for(int i=0;i<n;i++) { b.push_back(inputSeq[i]); if(inputSeq[i]<=n && st==-1) st=i; } sort(b.begin(),b.end()); for(int i=1;i<n;i++)if(b[i]==b[i-1])return 0; if(st==-1)return 1; int kb=inputSeq[st]+1; for(int i=st+1;i<n;i++) { if(kb>n)kb=1; if(inputSeq[i]!=kb++ && inputSeq[i]<=n)return 0; } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int st=-1; vector<pii> v; for(int i=0;i<n;i++) { if(gondolaSeq[i]<=n) { st=i; break; } } if(st==-1) { for(int i=0;i<n;i++)if(gondolaSeq[i]>n)v.push_back({gondolaSeq[i],i+1}); } else { int s; if(gondolaSeq[st]>st)s=gondolaSeq[st]-st; else s=n-(st-gondolaSeq[st]); for(int i=0;i<n;i++) { if(s==n+1)s=1; if(gondolaSeq[i]>n) { v.push_back({gondolaSeq[i],s}); } s++; } } sort(v.begin(),v.end()); int li=0; int tr=n+1; for(int i=0;i<v.size();i++) { replacementSeq[li++]=v[i].second; while(tr<v[i].first) { replacementSeq[li++]=tr++; } tr++; } return li; } //---------------------- int countReplacement(int n, int inputSeq[]) { if(!valid(n,inputSeq))return 0; sort(inputSeq,inputSeq+n); ll last=n; ll res=1; if(inputSeq[0]>n)res=n; for(int i=0;i<n;i++) { if(inputSeq[i]<=n)continue; ll dd=inputSeq[i]-1-last; res*=bigmod(n-i,dd); res%=mod; last=inputSeq[i]; } return res%mod; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:88:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;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...