제출 #991594

#제출 시각아이디문제언어결과실행 시간메모리
991594AlfraganusSails (IOI07_sails)C++17
25 / 100
1044 ms65536 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define str string #define endl '\n' #define all(a) a.begin(), a.end() #define fastio ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); #define print(a) \ for (auto x : a) \ cout << x << ' '; \ cout << endl; #define printmp(a) \ for (auto x : a) \ cout << x[0] << ' ' << x[1] << endl; const int mod = 998244353; void solve(){ int n; cin >> n; vector<array<int, 2>> a(n); int sum = 0; for(int i = 0; i < n; i ++) cin >> a[i][0] >> a[i][1], sum += a[i][1]; vector<vector<int>> p(100000); for(int i = 0; i < n; i ++) for(int j = 0; j < a[i][0]; j ++) p[j].push_back(i); auto get = [&](int x){ vector<array<int, 2>> c = a; int s = sum; int ans = 0; for(int i = 99999; i >= 0; i --){ vector<array<int, 2>> b; for(auto x : p[i]) if(a[x][1] > 0) b.push_back({a[x][1], x}); sort(all(b), greater<array<int, 2>>()); for(int j = 0; j < min(x, (int)b.size()); j ++){ ans += j; s --; a[b[j][1]][1] --; } } a = c; if(s == 0) return ans; return (int)1e18; }; int ans = 1e18; for(int i = 1; i <= n; i ++) ans = min(ans, get(i)); cout << ans; } signed main() { fastio; int t = 1; // cin >> t; while (t--) { solve(); cout << endl; } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...