Submission #1277789

#TimeUsernameProblemLanguageResultExecution timeMemory
1277789nguyenhuuhongquanSouvenirs (IOI25_souvenirs)C++20
0 / 100
1 ms400 KiB
#include <bits/stdc++.h> #include "souvenirs.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; } long long cnt[LimN], p[LimN], pw[65]; void buy_souvenirs(int n, long long P0){ pw[0] = 1; for (int i = 1; i < 63; i ++) pw[i] = pw[i - 1] * 2; p[0] = P0; for (int i = n - 1; i > 0; i --){ int val = min(P0 - 1, P0 / pw[i - 1]); auto [v, r] = transaction(val); int cost = val - r; for (auto x : v){ cnt[x] ++; if (x != i) cost -= p[x]; } p[i] = cost; } // for (int i = 1; i < n; i ++) cout << cnt[i] << " "; // cout << "\n"; // for (int i = 0; i < n; i ++) cout << p[i] << " "; // cout << "\n"; 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...