Submission #849722

#TimeUsernameProblemLanguageResultExecution timeMemory
849722abcvuitunggioGondola (IOI14_gondola)C++17
75 / 100
35 ms7504 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; map <int, int> mp; set <int> s; int valid(int n, int inputSeq[]) { int pos=0; for (int i=0;i<n;i++){ if (mp.count(inputSeq[i])) return 0; if (inputSeq[pos]>inputSeq[i]) pos=i; mp[inputSeq[i]]=1; } if (inputSeq[pos]>n) return 1; for (int i=0;i<n;i++) if (inputSeq[i]<=n&&((i-pos+n)%n+inputSeq[pos]-1)%n+1!=inputSeq[i]) return 0; return 1; } //---------------------- int pos[250001],cur[100001]; int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int val=0,p=0,mx=0; for (int i=0;i<n;i++){ if (gondolaSeq[p]>gondolaSeq[i]) p=i; mx=max(mx,gondolaSeq[i]); } if (gondolaSeq[p]>n) val=1,p=0; else val=gondolaSeq[p]; for (int i=0;i<n;i++){ int j=((i-p+n)%n+val-1)%n+1; pos[gondolaSeq[i]]=j; cur[j]=j; s.insert(i+1); } for (int i=0;i<n;i++) if (gondolaSeq[i]<=n) s.erase(gondolaSeq[i]); int l=0; for (int i=n+1;i<=mx;i++){ if (!pos[i]) pos[i]=*s.begin(); else s.erase(pos[i]); replacementSeq[l]=cur[pos[i]]; l++; cur[pos[i]]=i; } return l; } //---------------------- const int mod=1000000009; vector <int> v; int pw(int a, int b){ if (!b) return 1; int t=pw(a,b>>1); t=1LL*t*t%mod; return (b&1?1LL*t*a%mod:t); } int countReplacement(int n, int inputSeq[]) { if (!valid(n,inputSeq)) return 0; for (int i=0;i<n;i++) if (inputSeq[i]>n) v.push_back(inputSeq[i]); v.push_back(n); sort(v.begin(),v.end()); int res=1; for (int i=1;i<v.size();i++) res=1LL*res*pw(v.size()-i,v[i]-v[i-1]-1)%mod; return res; }

Compilation message (stderr)

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:89:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   89 |     for (int i=1;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...