Submission #1304551

#TimeUsernameProblemLanguageResultExecution timeMemory
1304551WarinchaiGondola (IOI14_gondola)C++20
25 / 100
36 ms8436 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; int valid(int n, int ar[]) { map<int,int>mp; vector<int>v; int cnt=0; int mx=0; for(int i=0;i<n;i++){ mp[ar[i]]++; mx=max(mx,ar[i]); if(ar[i]<=n)v.push_back(ar[i]); cnt+=(mp[ar[i]]>1?2:0); } //cerr<<"cnt:"<<cnt<<"\n"; int st=0; int mn=n+1; for(int i=0;i<n;i++){ if(ar[i]<mn){ mn=ar[i]; st=i; } } //cerr<<"mn:"<<mn<<" "<<st<<"\n"; if(mn<=n){ int cur=mn; for(int i=0;i<n;i++){ int id=(i+st)%n; if(ar[id]<=n){ if(ar[id]!=cur)cnt+=2; } cur++; } } //cerr<<"cnt:"<<cnt<<"\n"; for(int i=n+1;i<=mx;i++)if(mp[i]==0)cnt+=2; return cnt<=1; } //---------------------- int replacement(int n, int ar[], int rans[]) { map<int,int>mp; vector<int>v; int cnt=0; int mx=0; for(int i=0;i<n;i++){ mp[ar[i]]=i+1; mx=max(mx,ar[i]); } //cerr<<"cnt:"<<cnt<<"\n"; int st=0; int mn=n+1; for(int i=0;i<n;i++){ if(ar[i]<mn){ mn=ar[i]; st=i; } } //cerr<<"mn:"<<mn<<" "<<st<<"\n"; vector<int>val(n+5); multiset<int>ms; for(int i=0;i<n;i++)ms.insert(i); queue<int>q; int cur=mn; for(int i=0;i<n;i++){ int id=(i+st)%n; if(cur<=n){ if(ar[id]<=n){ if(ar[id]==cur){ ms.erase(i); } } } val[id]=(cur>n?cur-n:cur); cur++; } if(mn>n){ for(int i=0;i<n;i++)val[i]=i+1; } cur=n; vector<int>ans; int ii=0; for(int i=1;i<=mx-n;i++){ cur++; if(mp[cur]==0){ int x=*ms.begin(); ans.push_back(val[x]); rans[ii]=val[x]; ii++; val[x]=cur; }else{ int x=val[mp[cur]-1]; ans.push_back(x); rans[ii]=x; ii++; val[mp[cur]-1]=cur; ms.erase(mp[cur]-1); } } return ans.size(); } //---------------------- int countReplacement(int n, int inputSeq[]) { return -3; }
#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...