Submission #516080

#TimeUsernameProblemLanguageResultExecution timeMemory
516080antonioqbabGondola (IOI14_gondola)C++14
60 / 100
42 ms5120 KiB
#include <bits/stdc++.h> #include <gondola.h> using namespace std; int valid(int n, int a[]) { map<int,int> mp; int index=-1; for(int i=0; i<n; ++i) { if(mp.count(a[i])) return 0; ++mp[a[i]]; } for(int i=0; i<n; ++i) if(a[i]<=n) { index=i; break; } if(index==-1) return 1; int cur=a[index]; cur=cur==n?1:cur+1; for(int j=(index+1)%n; j!=index; j=(j+1)%n,cur=cur==n?1:cur+1) if(a[j]<=n && a[j] !=cur) return 0; return 1; } int replacement(int n, int a[], int ans[]) { vector<int> real(n); int index=-1, sol=0, cur; for(int i=0; i<n; ++i) if(a[i]<=n) { real[i]=a[i]; index=i; break; } if(index==-1){ real[0]=1; index=0; } cur=real[index]; cur=cur==n?1:cur+1; for(int j=(index+1)%n; j!=index; j=(j+1)%n,cur=cur==n?1:cur+1) real[j]=cur; vector<pair<int,int>> b; for(int i=0; i<n; ++i) if(a[i]>n) b.emplace_back(a[i],i); sort(b.begin(),b.end()); int last=n; for(auto [val,idx]:b) { ans[sol++]=real[idx]; for(int i=last+1; i<val; ++i) ans[sol++]=i; last=val; } return sol; } int countReplacement(int n, int a[]) { if(!valid(n,a)) return 0; const int mod = 1e9+9; vector<int> real(n); int index=-1, cur, sol=1; for(int i=0; i<n; ++i) if(a[i]<=n) { real[i]=a[i]; index=i; break; } if(index==-1){ real[0]=1; sol = n; index=0; } cur=real[index]; cur=cur==n?1:cur+1; for(int j=(index+1)%n; j!=index; j=(j+1)%n,cur=cur==n?1:cur+1) real[j]=cur; vector<pair<int,int>> b; for(int i=0; i<n; ++i) if(a[i]>n) b.emplace_back(a[i],i); sort(b.begin(),b.end()); int last=n, cnt=b.size(); auto pow=[&](int b, int e){ if(e<1) return 1; int ans =1; while(e){ if(e&1) ans=1LL*ans*b%mod; b=1LL*b*b%mod, e>>=1; } return ans; }; for(auto [val,idx]:b) { sol=(1LL*sol*pow(cnt,val-1-last))%mod; last=val; } return sol; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:58:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   58 |     for(auto [val,idx]:b)
      |              ^
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:108:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
  108 |     for(auto [val,idx]:b)
      |              ^
#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...