답안 #51995

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
51995 2018-06-23T03:08:51 Z zetapi 곤돌라 (IOI14_gondola) C++14
0 / 100
3 ms 688 KB
#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 -