Code Submission Evaluation System Login

Datatähti 2016 alku

Start:2015-09-28 00:00:00
End:2015-10-12 00:00:00
 

Tasks | Scoreboard | Statistics


CSES - Datatähti 2016 alku - Results
History
2015-10-09 17:27:350
2015-10-09 17:25:210
Task:Kirjat
Sender:Pajuzi
Submission time:2015-10-09 17:27:35
Language:C++
Status:READY
Score:0

Feedback

groupverdictscore
#1WRONG ANSWER0
#2WRONG ANSWER0
#3WRONG ANSWER0

Test results

testverdicttime (s)group
#1ACCEPTED0.05 / 1.001details
#2WRONG ANSWER0.05 / 1.001details
#3WRONG ANSWER0.06 / 1.001details
#4TIME LIMIT EXCEEDED-- / 1.001details
#5ACCEPTED0.06 / 1.001details
#6ACCEPTED0.05 / 1.001details
#7WRONG ANSWER0.06 / 1.001details
#8ACCEPTED0.06 / 1.001details
#9ACCEPTED0.06 / 1.001details
#10ACCEPTED0.05 / 1.001details
#11WRONG ANSWER0.05 / 1.001details
#12ACCEPTED0.05 / 1.001details
#13ACCEPTED0.06 / 1.001details
#14WRONG ANSWER0.05 / 1.001details
#15WRONG ANSWER0.06 / 1.001details
#16ACCEPTED0.06 / 1.001details
#17WRONG ANSWER0.06 / 1.001details
#18ACCEPTED0.05 / 1.001details
#19ACCEPTED0.05 / 1.001details
#20ACCEPTED0.06 / 1.001details
#21WRONG ANSWER0.06 / 1.002details
#22WRONG ANSWER0.05 / 1.002details
#23WRONG ANSWER0.05 / 1.002details
#24WRONG ANSWER0.06 / 1.002details
#25WRONG ANSWER0.06 / 1.002details
#26WRONG ANSWER0.05 / 1.002details
#27ACCEPTED0.05 / 1.002details
#28ACCEPTED0.06 / 1.002details
#29ACCEPTED0.06 / 1.002details
#30WRONG ANSWER0.06 / 1.002details
#31ACCEPTED0.07 / 1.002details
#32WRONG ANSWER0.05 / 1.002details
#33WRONG ANSWER0.05 / 1.002details
#34ACCEPTED0.05 / 1.002details
#35WRONG ANSWER0.06 / 1.002details
#36TIME LIMIT EXCEEDED-- / 1.002details
#37TIME LIMIT EXCEEDED-- / 1.002details
#38TIME LIMIT EXCEEDED-- / 1.002details
#39TIME LIMIT EXCEEDED-- / 1.002details
#40TIME LIMIT EXCEEDED-- / 1.002details
#41WRONG ANSWER0.05 / 1.003details
#42WRONG ANSWER0.05 / 1.003details
#43WRONG ANSWER0.05 / 1.003details
#44ACCEPTED0.06 / 1.003details
#45ACCEPTED0.06 / 1.003details
#46WRONG ANSWER0.07 / 1.003details
#47ACCEPTED0.06 / 1.003details
#48WRONG ANSWER0.05 / 1.003details
#49ACCEPTED0.06 / 1.003details
#50WRONG ANSWER0.05 / 1.003details
#51WRONG ANSWER0.05 / 1.003details
#52ACCEPTED0.05 / 1.003details
#53WRONG ANSWER0.05 / 1.003details
#54WRONG ANSWER0.05 / 1.003details
#55ACCEPTED0.05 / 1.003details
#56TIME LIMIT EXCEEDED-- / 1.003details
#57TIME LIMIT EXCEEDED-- / 1.003details
#58TIME LIMIT EXCEEDED-- / 1.003details
#59TIME LIMIT EXCEEDED-- / 1.003details
#60TIME LIMIT EXCEEDED-- / 1.003details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:98:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while (indx != used.size() && suitable <= n) {
               ^
input/code.cpp:124:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < repair.size(); i++) {
                    ^
input/code.cpp:128:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while (indx != used.size() && curSuitable <= n) {
               ^
input/code.cpp:143:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int i = 0; i < used.size(); i++) {
                      ^

Code

#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <list>
#include <set>
#include <algorithm>
#include <sstream>

int binarySearch(std::vector<std::pair<int, int>>& sorted, int searchedFor);
int binarySearch(std::vector<std::pair<int, int>>& sorted, std::pair<int, int> p);
void sortAlmostSorted(std::vector<std::pair<int, int>>&);

int main() {
	
	std::ios_base::sync_with_stdio(false);

	int n = 0;
	std::string nS;
	std::string f;
	std::string s;

	getline(std::cin, nS);
	getline(std::cin, f);
	getline(std::cin, s);

	n = (int)stof(nS);

	std::vector<int> first;
	std::vector<int> second;

	std::stringstream ss(f);
	std::stringstream ss2(s);

	std::string cur;

	for (int i = 0; i < n; i++) {
		ss >> cur;
		first.push_back((int)stof(cur));
		ss2 >> cur;
		second.push_back((int)stof(cur));
	}

	n = (int)stof(nS);
	int curF;
	int curS;

	std::string result;

	std::map<int, std::vector<int>> indices;
	std::map<int, std::vector<int>>::iterator itr;

	std::vector<std::pair<int, int>> nums;
	nums.reserve(n);

	std::vector<std::pair<int, int>> used;
	int indx = 0;
	std::pair<int, int>* currentPair;
	int current = 0;

	used.reserve(n);
	
	std::vector<std::pair<int, int>> repair;
	int suitable = 0;

	for (int i = 0; i < n; i++) {

		curF = first.at(i);
		curS = second.at(i);

		itr = indices.find(curF);

		nums.push_back(std::pair<int, int>(curF, curS));

		if (itr != indices.end()) {
			itr->second.push_back((int)(i));
		}
		else {
			indices.insert(std::pair<int, std::vector<int>>(curF, std::vector<int>(1, i)));

		}

		itr = indices.find(curS);

		if (itr != indices.end()) {
			itr->second.push_back(i);

		}
		else {
			indices.insert(std::pair<int, std::vector<int>>(curS, std::vector<int>(1, i)));

		}

		
		suitable = (curF * curF + abs(curS - curF)) % n + 1;
		indx = binarySearch(used, suitable);

		while (indx != used.size() && suitable <= n) {
			currentPair = &used.at(indx);
			current = currentPair->second;
			suitable = abs((curF * curF * (current * current) + abs(curS - curF)) % n + 1);
			currentPair->second++;

			indx = binarySearch(used, suitable);
		}

		if (suitable <= 0 || suitable == curF || suitable == curS) {
			repair.push_back(std::pair<int, int>(result.size(), i));
		}
		else {
			used.push_back(std::pair<int, int>(suitable, 1));
			sortAlmostSorted(used);
		}

		result.append(std::to_string(suitable));
		result.append(" ");
	}

	int curSuitable = 0;
	int curInd = 0;
	int num1 = 0;
	int num2 = 0;

	for (int i = 0; i < repair.size(); i++) {
		curSuitable = 1;
		indx = binarySearch(used, curSuitable);

		while (indx != used.size() && curSuitable <= n) {
			curSuitable++;
			indx = binarySearch(used, curSuitable);
		}
		
		used.push_back(std::pair<int, int>(curSuitable, 1));
		curInd = repair.at(i).second;

		num1 = indices.at(curSuitable).at(0);
		num2 = indices.at(curSuitable).at(1);

		int curUsed = 0;
		int j = 0;

		if (num1 == curInd || num2 == curInd) {
			for (int i = 0; i < used.size(); i++) {
				curUsed = used.at(i).first;

				if (curSuitable != curUsed && curUsed != num1 && curUsed != num2 
					&& nums.at(j).first != curSuitable && nums.at(j).second != curSuitable) {
					int index = result.find(" " + std::to_string(curUsed) + " ");
					result.replace(index+1, std::to_string(curUsed).length(), std::to_string(curSuitable));
					curSuitable = curUsed;
					break;
				}
				j++;
			}
		}

		result.replace(repair.at(i).first, 1, std::to_string(curSuitable));
	}

	std::cout << result;

	return 0;
}

int binarySearch(std::vector<std::pair<int, int>>& sorted, int searchedFor) {
	int i = 0;
	int length = sorted.size();

	if (length <= 0) {
		return false;
	}

	for (int n = length / 2; n >= 1; n /= 2) {
		while (i + n < length && sorted.at(i + n).first <= searchedFor) {
			i += n;
		}
	}
	
	if (sorted.at(i).first == searchedFor) {
		return i;
	}

	return sorted.size();
}

int binarySearch(std::vector<std::pair<int, int>>& sorted, std::pair<int, int> p) {
	int i = 0;
	int length = sorted.size();
	int searchedFor = p.first;

	if (length <= 0) {
		return false;
	}

	for (int n = length / 2; n >= 1; n /= 2) {
		while (i + n < length && sorted.at(i + n).first <= searchedFor) {
			i += n;
		}
	}

	return i;
}

void sortAlmostSorted(std::vector<std::pair<int, int>>& almostSorted) {
	int l = almostSorted.size();

	if (l <= 1) {
		return;
	}

	int last = almostSorted.at(l - 2).first;
	std::pair<int, int> inserted = almostSorted.at(l - 1);

	if (inserted.first >= last) {
		return;
	}
	else if (inserted.first <= almostSorted.at(0).first) {
		almostSorted.insert(almostSorted.begin(), inserted);
	}

	almostSorted.pop_back();

	int index = binarySearch(almostSorted, inserted);
	int number = almostSorted.at(index).first;

	if (number > inserted.first) {
		almostSorted.insert(almostSorted.begin() + index - 1, inserted);
	}
	else {
		almostSorted.insert(almostSorted.begin() + index + 1, inserted);
	}

}


Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
3
2 1 3
3 2 1

view   save

correct output
1 3 2 

view   save

user output
1 3 2 

view   save

Test 2

Group: 1

Verdict: WRONG ANSWER

input
4
2 1 4 3
1 4 3 2

view   save

correct output
4 3 2 1 

view   save

user output
3 2 2 1 

view   save

Test 3

Group: 1

Verdict: WRONG ANSWER

input
4
4 3 2 1
3 1 4 2

view   save

correct output
1 2 3 4 

view   save

user output
1 4 3 2 

view   save

Test 4

Group: 1

Verdict: TIME LIMIT EXCEEDED

input
4
3 4 2 1
2 3 1 4

view   save

correct output
1 2 4 3 

view   save

user output
(empty)

Test 5

Group: 1

Verdict: ACCEPTED

input
4
4 1 3 2
2 3 1 4

view   save

correct output
1 4 2 3 

view   save

user output
3 4 2 1 

view   save

Test 6

Group: 1

Verdict: ACCEPTED

input
5
5 1 3 2 4
3 4 2 1 5

view   save

correct output
2 3 4 5 1 

view   save

user output
4 5 1 3 2 

view   save

Test 7

Group: 1

Verdict: WRONG ANSWER

input
5
4 2 3 5 1
3 5 2 1 4

view   save

correct output
1 4 5 2 3 

view   save

user output
2 3 1 2 5 

view   save

Test 8

Group: 1

Verdict: ACCEPTED

input
5
1 4 3 2 5
4 3 1 5 2

view   save

correct output
3 2 5 1 4 

view   save

user output
5 1 2 3 4 

view   save

Test 9

Group: 1

Verdict: ACCEPTED

input
5
5 3 2 1 4
4 2 1 3 5

view   save

correct output
1 4 5 2 3 

view   save

user output
2 5 3 4 1 

view   save

Test 10

Group: 1

Verdict: ACCEPTED

input
5
4 3 5 1 2
5 1 3 2 4

view   save

correct output
2 5 1 4 3 

view   save

user output
3 2 1 4 5 

view   save

Test 11

Group: 1

Verdict: WRONG ANSWER

input
5
5 1 3 2 4
2 5 4 3 1

view   save

correct output
3 4 2 1 5 

view   save

user output
4 2 2 1 5 

view   save

Test 12

Group: 1

Verdict: ACCEPTED

input
5
5 4 2 1 3
2 3 5 4 1

view   save

correct output
3 1 4 5 2 

view   save

user output
4 1 3 5 2 

view   save

Test 13

Group: 1

Verdict: ACCEPTED

input
5
1 5 2 4 3
5 1 4 3 2

view   save

correct output
3 2 5 1 4 

view   save

user output
2 3 1 5 4 

view   save

Test 14

Group: 1

Verdict: WRONG ANSWER

input
5
5 3 4 2 1
3 5 2 1 4

view   save

correct output
1 2 3 4 5 

view   save

user output
1 2 1 5 2 

view   save

Test 15

Group: 1

Verdict: WRONG ANSWER

input
5
4 5 3 2 1
3 2 1 4 5

view   save

correct output
5 3 2 1 4 

view   save

user output
1 4 2 3 1 

view   save

Test 16

Group: 1

Verdict: ACCEPTED

input
10
4 9 1 10 6 8 7 2 3 5
8 5 7 3 1 6 4 10 2 9

view   save

correct output
3 1 9 2 4 7 8 6 5 10 

view   save

user output
1 6 8 2 10 7 9 5 4 3 

view   save

Test 17

Group: 1

Verdict: WRONG ANSWER

input
10
6 10 8 2 3 5 7 1 4 9
4 1 2 10 5 6 9 3 8 7

view   save

correct output
5 7 1 3 9 2 4 10 6 8 

view   save

user output
9 20 1 3 10 7 4 8 5 6 

view   save

Test 18

Group: 1

Verdict: ACCEPTED

input
10
8 2 9 10 1 6 4 7 3 5
3 8 4 5 6 7 9 10 1 2

view   save

correct output
1 6 8 9 5 4 10 3 2 7 

view   save

user output
10 1 7 6 5 8 2 3 9 4 

view   save

Test 19

Group: 1

Verdict: ACCEPTED

input
10
6 3 8 9 5 7 4 10 1 2
8 9 10 1 3 6 2 7 4 5

view   save

correct output
5 1 6 2 8 10 7 3 9 4 

view   save

user output
9 6 7 10 8 2 3 4 5 1 

view   save

Test 20

Group: 1

Verdict: ACCEPTED

input
10
8 3 5 6 2 10 4 7 1 9
4 7 8 10 5 2 6 1 9 3

view   save

correct output
1 5 7 3 10 6 9 4 2 8 

view   save

user output
9 4 7 1 8 5 3 6 10 2 

view   save

Test 21

Group: 2

Verdict: WRONG ANSWER

input
3
3 2 1
1 3 2

view   save

correct output
2 1 3 

view   save

user output
1 3 3 

view   save

Test 22

Group: 2

Verdict: WRONG ANSWER

input
4
2 3 1 4
1 4 3 2

view   save

correct output
3 2 4 1 

view   save

user output
3 1 4 3 

view   save

Test 23

Group: 2

Verdict: WRONG ANSWER

input
4
2 4 3 1
4 1 2 3

view   save

correct output
3 2 1 4 

view   save

user output
3 1 1 4 

view   save

Test 24

Group: 2

Verdict: WRONG ANSWER

input
4
4 1 2 3
1 3 4 2

view   save

correct output
3 2 1 4 

view   save

user output
4 1 3 1 

view   save

Test 25

Group: 2

Verdict: WRONG ANSWER

input
4
2 1 3 4
4 3 2 1

view   save

correct output
3 4 1 2 

view   save

user output
3 4 1 1 

view   save

Test 26

Group: 2

Verdict: WRONG ANSWER

input
5
2 5 3 1 4
4 2 1 5 3

view   save

correct output
5 4 2 3 1 

view   save

user output
1 4 2 1 1 

view   save

Test 27

Group: 2

Verdict: ACCEPTED

input
5
1 4 3 2 5
5 2 4 1 3

view   save

correct output
4 5 2 3 1 

view   save

user output
4 5 1 3 2 

view   save

Test 28

Group: 2

Verdict: ACCEPTED

input
5
1 4 2 3 5
2 3 1 5 4

view   save

correct output
4 5 3 1 2 

view   save

user output
3 5 4 2 1 

view   save

Test 29

Group: 2

Verdict: ACCEPTED

input
5
4 5 2 3 1
5 3 1 2 4

view   save

correct output
1 2 3 4 5 

view   save

user output
3 2 4 1 5 

view   save

Test 30

Group: 2

Verdict: WRONG ANSWER

input
5
3 2 1 5 4
5 4 3 1 2

view   save

correct output
4 5 2 3 1 

view   save

user output
2 1 4 1 3 

view   save

Test 31

Group: 2

Verdict: ACCEPTED

input
5
5 3 1 2 4
3 2 4 1 5

view   save

correct output
4 5 2 3 1 

view   save

user output
4 1 5 3 2 

view   save

Test 32

Group: 2

Verdict: WRONG ANSWER

input
5
5 4 1 2 3
1 5 3 4 2

view   save

correct output
2 3 4 5 1 

view   save

user output
2 3 4 1 2 

view   save

Test 33

Group: 2

Verdict: WRONG ANSWER

input
5
1 4 5 3 2
3 5 2 4 1

view   save

correct output
5 1 3 2 4 

view   save

user output
4 3 2 2 1 

view   save

Test 34

Group: 2

Verdict: ACCEPTED

input
5
3 4 2 1 5
1 5 3 4 2

view   save

correct output
2 3 4 5 1 

view   save

user output
2 3 1 5 4 

view   save

Test 35

Group: 2

Verdict: WRONG ANSWER

input
5
2 3 1 5 4
5 4 2 1 3

view   save

correct output
1 2 3 4 5 

view   save

user output
3 5 4 1 2 

view   save

Test 36

Group: 2

Verdict: TIME LIMIT EXCEEDED

input
1000
63 72 78 267 740 551 517 698 6...
view   save

correct output
26 926 267 321 385 444 968 690...
view   save

user output
(empty)

Test 37

Group: 2

Verdict: TIME LIMIT EXCEEDED

input
1000
954 273 839 263 331 161 938 51...
view   save

correct output
1 2 3 4 5 6 7 8 9 10 11 12 13 ...
view   save

user output
(empty)

Test 38

Group: 2

Verdict: TIME LIMIT EXCEEDED

input
1000
740 142 781 837 759 392 582 14...
view   save

correct output
111 291 702 70 561 469 707 897...
view   save

user output
(empty)

Test 39

Group: 2

Verdict: TIME LIMIT EXCEEDED

input
1000
960 550 210 529 691 277 63 975...
view   save

correct output
716 604 535 519 27 204 574 592...
view   save

user output
(empty)

Test 40

Group: 2

Verdict: TIME LIMIT EXCEEDED

input
1000
371 772 197 202 504 931 4 46 6...
view   save

correct output
26 926 267 321 385 444 968 690...
view   save

user output
(empty)

Test 41

Group: 3

Verdict: WRONG ANSWER

input
3
1 2 3
3 1 2

view   save

correct output
2 3 1 

view   save

user output
1 2 3 

view   save

Test 42

Group: 3

Verdict: WRONG ANSWER

input
4
4 2 3 1
2 3 1 4

view   save

correct output
1 4 2 3 

view   save

user output
3 1 1 4 

view   save

Test 43

Group: 3

Verdict: WRONG ANSWER

input
4
2 1 4 3
4 3 1 2

view   save

correct output
1 2 3 4 

view   save

user output
1 4 3 1 

view   save

Test 44

Group: 3

Verdict: ACCEPTED

input
4
1 4 2 3
2 3 4 1

view   save

correct output
3 2 1 4 

view   save

user output
3 2 1 4 

view   save

Test 45

Group: 3

Verdict: ACCEPTED

input
4
2 1 4 3
1 3 2 4

view   save

correct output
4 2 3 1 

view   save

user output
3 4 1 2 

view   save

Test 46

Group: 3

Verdict: WRONG ANSWER

input
5
3 1 5 2 4
5 4 2 1 3

view   save

correct output
1 2 3 4 5 

view   save

user output
1 5 4 2 1 

view   save

Test 47

Group: 3

Verdict: ACCEPTED

input
5
2 1 5 3 4
5 3 2 4 1

view   save

correct output
4 5 3 1 2 

view   save

user output
3 4 1 2 5 

view   save

Test 48

Group: 3

Verdict: WRONG ANSWER

input
5
5 1 4 3 2
3 5 1 2 4

view   save

correct output
1 2 3 4 5 

view   save

user output
2 2 5 2 1 

view   save

Test 49

Group: 3

Verdict: ACCEPTED

input
5
2 4 1 3 5
3 5 4 1 2

view   save

correct output
5 1 3 2 4 

view   save

user output
1 3 5 2 4 

view   save

Test 50

Group: 3

Verdict: WRONG ANSWER

input
5
5 2 3 4 1
2 1 4 3 5

view   save

correct output
1 4 5 2 3 

view   save

user output
2 4 1 2 2 

view   save

Test 51

Group: 3

Verdict: WRONG ANSWER

input
5
4 1 5 3 2
2 4 1 5 3

view   save

correct output
1 2 3 4 5 

view   save

user output
3 5 3 2 1 

view   save

Test 52

Group: 3

Verdict: ACCEPTED

input
5
3 1 5 2 4
1 4 2 3 5

view   save

correct output
5 2 1 4 3 

view   save

user output
2 5 4 1 3 

view   save

Test 53

Group: 3

Verdict: WRONG ANSWER

input
5
1 4 5 3 2
4 2 3 5 1

view   save

correct output
5 3 2 1 4 

view   save

user output
5 1 1 1 2 

view   save

Test 54

Group: 3

Verdict: WRONG ANSWER

input
5
1 4 5 2 3
4 2 3 1 5

view   save

correct output
2 3 4 5 1 

view   save

user output
5 1 1 2 1 

view   save

Test 55

Group: 3

Verdict: ACCEPTED

input
5
4 5 3 2 1
5 3 4 1 2

view   save

correct output
1 2 5 3 4 

view   save

user output
3 2 1 4 5 

view   save

Test 56

Group: 3

Verdict: TIME LIMIT EXCEEDED

input
100000
74620 99226 537 63830 13777 69...
view   save

correct output
44158 25720 84658 90057 99607 ...
view   save

user output
(empty)

Test 57

Group: 3

Verdict: TIME LIMIT EXCEEDED

input
100000
67665 19864 90761 58104 38796 ...
view   save

correct output
1 2 3 4 5 6 7 8 9 10 11 12 13 ...
view   save

user output
(empty)

Test 58

Group: 3

Verdict: TIME LIMIT EXCEEDED

input
100000
63021 24161 40379 69157 89616 ...
view   save

correct output
4913 70683 13897 99969 66725 3...
view   save

user output
(empty)

Test 59

Group: 3

Verdict: TIME LIMIT EXCEEDED

input
100000
31500 70052 90949 56812 73871 ...
view   save

correct output
47064 17335 15460 80797 56435 ...
view   save

user output
(empty)

Test 60

Group: 3

Verdict: TIME LIMIT EXCEEDED

input
100000
39127 4446 57817 67459 53741 8...
view   save

correct output
96591 75698 82505 59416 72144 ...
view   save

user output
(empty)