Submission #1277563

#TimeUsernameProblemLanguageResultExecution timeMemory
1277563nguyenhuuhongquanSouvenirs (IOI25_souvenirs)C++20
3 / 100
12 ms400 KiB
#include <bits/stdc++.h>
using namespace std;
#define double long double
#define ull unsigned long long
#define BIG __int128
#define fi first
#define se second
#define MASK(i) (1ll << i)
#define BIT(x, i) (((x) >> (i)) & 1)
#define sz(x) (int)(x).size()
#define debug cout << "NO ERROR", exit(0);
#define TASK "txt"
#define IOS ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
const int MOD = 1e9 + 7;
const long long INF = 1000000000000000000ll;
const int LimN = 100 + 5;
void maximize(int &x, int y){
    x = max(x, y);
}
void minimize(int &x, int y){
    x = min(x, y);
}
void add(int &x, int y){
    x = (x % MOD + y % MOD) % MOD;
}
pair<vector<int>, long long> transaction(long long M);
int cnt[LimN], p[LimN];
void buy_souvenirs(int n, long long P0){
    memset(cnt, 0, sizeof cnt);
    p[0] = P0;
    for (int i = 1; i < n; i ++){
        auto [v, r] = transaction(p[i - 1] - 1);
        cnt[i] ++;
        if (sz(v) == 2) cnt[n - 1] ++;
        if (sz(v) == 2 || r == 1) p[i] = p[i - 1] - 2;
        else p[i] = p[i - 1] - 1;
    }
    for (int i = 1; i < n; i ++){
        for (int j = cnt[i] + 1; j <= i; j ++) transaction(p[i]);
    }
}

#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...