CSES - Putka Open 2015 – 1/6 - Results
Submission details
Task:Aita
Sender:
Submission time:2015-07-18 18:25:26 +0300
Language:C++
Status:READY
Result:45
Feedback
groupverdictscore
#1ACCEPTED17
#2ACCEPTED28
#30
Test results
testverdicttimegroup
#1ACCEPTED0.07 s1details
#2ACCEPTED0.08 s1details
#3ACCEPTED0.08 s1details
#4ACCEPTED0.08 s1details
#5ACCEPTED0.09 s1details
#6ACCEPTED0.10 s2details
#7ACCEPTED0.11 s2details
#8ACCEPTED0.09 s2details
#9ACCEPTED0.10 s2details
#10ACCEPTED0.08 s2details
#11ACCEPTED0.12 s3details
#12ACCEPTED0.13 s3details
#13ACCEPTED0.09 s3details
#141.91 s3details
#15ACCEPTED1.92 s3details

Code

#include <iostream>
#include <cmath>
#include <set>
#include <algorithm>
#include <vector>
#include <ctime>        // std::time
#include <cstdlib>      // std::rand, std::srand

#define ll long long
#define ull unsigned long long

#define pii pair<int, int>
#define pll pair<long long, long long>

#define defmod 1000000007
using namespace std;

int myrandom (int i) { return std::rand()%i;}

int main(){
	cin.sync_with_stdio(0);
	cin.tie(0);
	
	ll n, k; cin >> n >> k;
	if(n <= 10){
		vector<int> heh;
		for(int i = 0; i < n; i++)
			heh.push_back(i+1);
		do{
			bool okkkkk = true;
			for(int i = 1; i < n; i++){
				if(abs(heh[i]-heh[i-1]) < k)
					okkkkk = false;
			}

			if(okkkkk){
				for(int i = 0; i < n; i++){
					cout << heh[i] << " ";
				}
				cout << endl;
				return 0;
			}
			
		}while(next_permutation(heh.begin(), heh.end()));
		cout << "QAQ" << endl;
	}
	ll r[101010] = {0};
	set<int> lo;
	for(int i = 0; i < n; i++)
		lo.insert(i+1);
	r[1] = 1;
	lo.erase(1);
	for(int i = 2; i <= n; i++){
		if(lo.count(r[i-1]+k)){
			r[i] = r[i-1]+k;
			lo.erase(r[i]);
		}
		else if(lo.count(r[i-1]-k)){
			r[i] = r[i-1]-k;
			lo.erase(r[i]);
		}
		else{
			int nn = *(lo.begin());
			if(abs(r[i-1]-nn) < k){
				nn = *(lo.lower_bound(r[i-1]+k));
				if(lo.count(nn) && abs(r[i-1]-nn) >= k){
					r[i] = nn;
					lo.erase(nn);
				}

			}
			else{
				r[i] = nn;
				lo.erase(nn);
			}
		}

	}
	bool ebin = true;
	r[0] = 99999999999LL;
	r[n+1] = 999999999999LL;
	for(int i = 1; i <= n; i++){
		if(abs(r[i]-r[i+1]) < k || abs(r[i]-r[i-1]) < k || r[i] <= 0 || r[i] > n){
			ebin = false;
		}
	}
	if(ebin){
		for(int i = 1; i <= n; i++){
			cout << r[i] << " ";
		}
		cout << endl;
		return 0;
	}
	vector<int> uuh;
	for(int i = 0; i < n; i++)
		uuh.push_back(i+1);

	srand ( unsigned ( time(0) ) );
	for(int i = 0; i < 1500; i++){
		random_shuffle(uuh.begin(), uuh.end(), myrandom);
		bool okkkk = true;
			for(int i = 1; i < n; i++){
				if(abs(uuh[i]-uuh[i-1]) < k)
					okkkk = false;
			}

			if(okkkk){
				for(int i = 0; i < n; i++){
					cout << uuh[i] << " ";
				}
				cout << endl;
				return 0;
			}
	}
	cout << "QAQ" << endl;
	return 0;
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
2 2

correct output
QAQ

user output
QAQ
QAQ

Test 2

Group: 1

Verdict: ACCEPTED

input
3 2

correct output
QAQ

user output
QAQ
QAQ

Test 3

Group: 1

Verdict: ACCEPTED

input
4 2

correct output
3 1 4 2 

user output
2 4 1 3 

Test 4

Group: 1

Verdict: ACCEPTED

input
7 4

correct output
QAQ

user output
QAQ
QAQ

Test 5

Group: 1

Verdict: ACCEPTED

input
8 4

correct output
5 1 6 2 7 3 8 4 

user output
4 8 3 7 2 6 1 5 

Test 6

Group: 2

Verdict: ACCEPTED

input
80476 2

correct output
40239 1 40240 2 40241 3 40242 ...

user output
1 3 5 7 9 11 13 15 17 19 21 23...

Test 7

Group: 2

Verdict: ACCEPTED

input
68652 2

correct output
34327 1 34328 2 34329 3 34330 ...

user output
1 3 5 7 9 11 13 15 17 19 21 23...

Test 8

Group: 2

Verdict: ACCEPTED

input
62735 2

correct output
31368 1 31369 2 31370 3 31371 ...

user output
1 3 5 7 9 11 13 15 17 19 21 23...

Test 9

Group: 2

Verdict: ACCEPTED

input
71954 2

correct output
35978 1 35979 2 35980 3 35981 ...

user output
1 3 5 7 9 11 13 15 17 19 21 23...

Test 10

Group: 2

Verdict: ACCEPTED

input
4 2

correct output
3 1 4 2 

user output
2 4 1 3 

Test 11

Group: 3

Verdict: ACCEPTED

input
89814 3

correct output
44908 1 44909 2 44910 3 44911 ...

user output
1 4 7 10 13 16 19 22 25 28 31 ...

Test 12

Group: 3

Verdict: ACCEPTED

input
91140 5

correct output
45571 1 45572 2 45573 3 45574 ...

user output
1 6 11 16 21 26 31 36 41 46 51...

Test 13

Group: 3

Verdict: ACCEPTED

input
66703 16675

correct output
33352 1 33353 2 33354 3 33355 ...

user output
1 16676 33351 50026 66701 2 16...

Test 14

Group: 3

Verdict:

input
66666 33333

correct output
33334 1 33335 2 33336 3 33337 ...

user output
QAQ

Test 15

Group: 3

Verdict: ACCEPTED

input
66666 33334

correct output
QAQ

user output
QAQ