Submission #1286458

#TimeUsernameProblemLanguageResultExecution timeMemory
1286458aleksandreSouvenirs (IOI25_souvenirs)C++20
25 / 100
13 ms392 KiB
#include "souvenirs.h"
#include <utility>
#include <vector>
using namespace std;
void buy_souvenirs(int N, long long P0) {
	if (N==2) {
		transaction(P0-1);
	} else
	if (N==3) {
		int k = 0;
		pair <vector<int>, long long> m = transaction(P0-1);
		if (int(m.first.size()) == 2) {
			k = 1;
		}
		if (k == 0) {
			transaction(P0-1-m.second-1);
			transaction(P0-1-m.second-1);
		} else {
			transaction((P0-1-m.second)/2);
		}
	} else 
	if (P0==N) {
		for (int i = 1;  i <= N-1; i++) {
    		for (int j = 1; j <= i; j++) {
    			transaction(N-i);
			}
		}
	} else {
		int k = 0, l = 0;
		for (int i = 1; i < N; i++) {
			pair <vector<int>, long long> m = transaction(P0-1);
			if (m.first.size() == 2) {
				k++;
				for (int j = 1; j <= i-1; j++) {
					transaction(P0-2);
				}
				P0-=2;
			} else {
				for (int j = 1; j <= i-1; j++) {
					transaction(P0-1);
				}
				P0--;
			}
			if (k > 0 && i == N-1) {
				l++;
				break;
			}
		}
		if (l) {
			for (int i = 1; i <= N-1-k; i++) {
				transaction(1);
			}
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...