Submission #30337

# Submission time Handle Problem Language Result Execution time Memory
30337 2017-07-23T08:58:20 Z inqr Gondola (IOI14_gondola) C++14
25 / 100
46 ms 7764 KB
#include "gondola.h"
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define rt insert
#define st first
#define nd second
#define ll long long
#define pii pair < int , int >
#define DB printf("debug\n");
#define umax( x , y ) x = max( x , (y) )
#define umin( x , y ) x = min( x , (y) )
#define all(x) x.begin() , x.end()
using namespace std;
int nx(int i,int sz){
	return (i+1)%(sz);
}
map < int,int > timesseen;
int valid(int n, int inputSeq[])
{
	vector < int > orig;
	for(int i=0;i<n;i++){
		int nxx=nx(i,n);
		timesseen[inputSeq[i]]++;
		if(timesseen[inputSeq[i]]>1)return 0;
		if(inputSeq[i]<=n)orig.pb(inputSeq[i]);
		if(inputSeq[i]<=n&&inputSeq[nxx]<=n){
			if(inputSeq[i]==n && inputSeq[nxx]!=1)return 0;
			else if(inputSeq[i]<n && inputSeq[nxx]!=inputSeq[i]+1)return 0;
		}
	}
	int startover=0;
	for(int i=0;i<orig.size();i++){
		int nxx=nx(i,orig.size());
		if(orig[i]<orig[nxx])continue;
		else if(startover==0)startover++;
		else if(startover==1)return 0;
	}
 	return 1;
}

//----------------------

int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
	int origl=-1;
	int broken=0;
	for(int i=0;i<n;i++){
		int nxx=nx(i,n);
		if(gondolaSeq[i]<=n){
			origl=i-(gondolaSeq[i]-1)+n;
			origl%=n;
		}
		umax(broken,gondolaSeq[i]-n);
	}
	if(origl==-1)origl=0;

	int repind[broken];
	set < int > repcand;
	int orig[n];
	for(int i=0;i<n;i++){
		int ogon=(i+1)-origl+n;
		if(ogon>n)ogon%=n;
		orig[i]=ogon;
		if(gondolaSeq[i]>n){
			repcand.insert(i);
			repind[gondolaSeq[i]-n-1]=i;
		}
	}
	for(int i=0;i<broken;i++){
		if(!repind[i]){
			replacementSeq[i]=orig[*repcand.begin()];
			orig[*repcand.begin()]=i+n+1;
		}
		else{
			replacementSeq[i]=orig[repind[i]];
			orig[repind[i]]=i+n+1;
			repcand.erase(repcand.find(repind[i]));
		}
	}
	return broken;
}

//----------------------

int countReplacement(int n, int inputSeq[])
{
  return -3;
}

Compilation message

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:33:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<orig.size();i++){
               ^
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:49:7: warning: unused variable 'nxx' [-Wunused-variable]
   int nxx=nx(i,n);
       ^
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3392 KB Output is correct
2 Correct 0 ms 3392 KB Output is correct
3 Correct 0 ms 3392 KB Output is correct
4 Correct 0 ms 3392 KB Output is correct
5 Correct 0 ms 3392 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3392 KB Output is correct
2 Correct 0 ms 3392 KB Output is correct
3 Correct 0 ms 3392 KB Output is correct
4 Correct 0 ms 3392 KB Output is correct
5 Correct 0 ms 3392 KB Output is correct
6 Correct 13 ms 5396 KB Output is correct
7 Correct 9 ms 3392 KB Output is correct
8 Correct 23 ms 7236 KB Output is correct
9 Correct 6 ms 4608 KB Output is correct
10 Correct 39 ms 7764 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3392 KB Output is correct
2 Correct 0 ms 3392 KB Output is correct
3 Correct 0 ms 3392 KB Output is correct
4 Correct 0 ms 3392 KB Output is correct
5 Correct 0 ms 3392 KB Output is correct
6 Correct 16 ms 5396 KB Output is correct
7 Correct 16 ms 3392 KB Output is correct
8 Correct 33 ms 7236 KB Output is correct
9 Correct 9 ms 4608 KB Output is correct
10 Correct 46 ms 7764 KB Output is correct
11 Correct 0 ms 3392 KB Output is correct
12 Correct 0 ms 3392 KB Output is correct
13 Correct 19 ms 4580 KB Output is correct
14 Correct 0 ms 3392 KB Output is correct
15 Correct 9 ms 3392 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3392 KB Output is correct
2 Correct 0 ms 3392 KB Output is correct
3 Correct 0 ms 3392 KB Output is correct
4 Correct 0 ms 3392 KB Output is correct
5 Correct 0 ms 3392 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3392 KB Output is correct
2 Correct 0 ms 3392 KB Output is correct
3 Correct 0 ms 3392 KB Output is correct
4 Correct 0 ms 3392 KB Output is correct
5 Correct 0 ms 3392 KB Output is correct
6 Runtime error 0 ms 3392 KB Execution killed because of forbidden syscall writev (20)
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3392 KB Output is correct
2 Correct 0 ms 3392 KB Output is correct
3 Correct 0 ms 3392 KB Output is correct
4 Correct 0 ms 3392 KB Output is correct
5 Correct 0 ms 3392 KB Output is correct
6 Runtime error 0 ms 3392 KB Execution killed because of forbidden syscall writev (20)
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 3392 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 3392 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 3392 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 3392 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -