제출 #1249684

#제출 시각아이디문제언어결과실행 시간메모리
1249684_abaatar선물 (IOI25_souvenirs)C++20
3 / 100
11 ms412 KiB
#include "souvenirs.h"
#include <utility>
#include <vector>
#include <cassert>
#include <algorithm>
#include <numeric>
#include <iostream>
#include <cstring>
using namespace std;

const int Ma = 5e2+10;
using ll = long long;
int sold[111];

void buy_souvenirs(int N, long long P0) {
    // if (N == 2) transaction(P0-1);
    // else {
    //     for (int i = N - 1; i > 0; i--) {
    //         for (int j = i; j > 0; j--) transaction(j);
    //     }
    // }
    for (int i = 1; i < N; i++) sold[i] = 0;

    ll cur = P0 - 1;

    for (int i = 1; i < N - 1; i++) {
        auto res = transaction(cur);
        if (res.second == 1) { // no price 1
            for (int j = 0; j < i - 1; j++) {
                transaction(cur - 1);
            }
            cur -= 2;
        }
        else {
            if (res.first.size() == 1) {
                for (int j = 0; j < i - 1; j++) {
                    transaction(cur);
                }
                cur -= 1;
            }
            else {
                sold[N - 1]++;
                for (int j = 0; j < i - 1; j++) {
                    transaction(cur - 1);
                    sold[N - 1]++;
                }
            }
        }
    }

    while (sold[N - 1] < N - 1) {
        sold[N - 1]++;
        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...