#include <gondola.h>
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define ll long long
#define itr ::iterator
typedef pair<int,int> pii;
const int MAX=5e5;
int arr[MAX],fin[MAX],fre[MAX];
int valid(int n,int inputSeq[])
{
return 1;
}
int replacement(int n,int gondolaSeq[],int replacementSeq[])
{
vector<int> vec;
priority_queue<int> absent;
priority_queue<pii> present;
pii cur;
int N=n,mx=0,change=0,sec;
for(int A=0;A<N;A++)
arr[A]=A;
for(int A=0;A<N;A++)
{
if(gondolaSeq[A]<=N)
{
gondolaSeq[A]--;
for(int B=A;B>=0;B--)
{
arr[B]=gondolaSeq[A];
gondolaSeq[A]--;
if(gondolaSeq[A]<0)
gondolaSeq[A]+=N;
}
gondolaSeq[A]=arr[A];
for(int B=A+1;B<N;B++)
{
gondolaSeq[A]++;
if(gondolaSeq[A]>=N)
gondolaSeq[A]=0;
arr[B]=gondolaSeq[A];
}
gondolaSeq[A]=arr[A]+1;
break;
}
}
for(int A=0;A<N;A++)
arr[A]++;
for(int A=0;A<N;A++)
{
fre[gondolaSeq[A]]++;
mx=max(mx,gondolaSeq[A]);
present.push(mp(gondolaSeq[A],A));
if(arr[A]!=gondolaSeq[A])
change++;
}
for(int A=1;A<=mx;A++)
{
if(!fre[A])
absent.push(A);
}
while(!present.empty())
{
cur=present.top();
if(cur.first<=N+change)
break;
present.pop();
sec=absent.top();
present.push(mp(sec,cur.second));
absent.pop();
//cout<<cur.second<<" "<<cur.first<<" "<<sec<<"\n";
vec.pb(sec);
}
while(!present.empty())
{
cur=present.top();
present.pop();
fin[cur.second]=cur.first;
}
for(int A=0;A<N;A++)
{
if(fin[A]!=arr[A])
present.push(mp(fin[A],arr[A]));
}
while(!present.empty())
{
cur=present.top();
present.pop();
vec.pb(cur.second);
}
reverse(vec.begin(),vec.end());
// for(auto A:vec)
// cout<<A<<" ";
for(int A=0;A<vec.size();A++)
replacementSeq[A]=arr[A];
return vec.size();
}
int countReplacement(int n, int inputSeq[])
{
return -3;
}
/*int main()
{
ios_base::sync_with_stdio(false);
cout<<replacement()<<"\n";
return 0;
}*/
Compilation message
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:101:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int A=0;A<vec.size();A++)
~^~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
376 KB |
Output is correct |
2 |
Incorrect |
3 ms |
376 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
412 KB |
Output is correct |
2 |
Incorrect |
2 ms |
412 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
620 KB |
Output is correct |
2 |
Incorrect |
3 ms |
620 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
620 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
688 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
688 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
688 KB |
Integer -3 violates the range [0, 1000000008] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
3 ms |
688 KB |
Integer -3 violates the range [0, 1000000008] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
688 KB |
Integer -3 violates the range [0, 1000000008] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
688 KB |
Integer -3 violates the range [0, 1000000008] |
2 |
Halted |
0 ms |
0 KB |
- |