Submission #1277786

#TimeUsernameProblemLanguageResultExecution timeMemory
1277786nguyenhuuhongquanSouvenirs (IOI25_souvenirs)C++20
4 / 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 --){ auto [v, r] = transaction((P0 - 1) / pw[i - 1]); int cost = (P0 - 1) / pw[i - 1] - 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...