#include<bits/stdc++.h>usingnamespace std;intmain(){int n;
cin >> n;
vector<double>a(n),b(n);for(int i =0; i < n; i++) cin >> a[i]>> b[i];double t =0, ans =0;for(int i =0; i < n; i++) t += a[i]/ b[i];
t /=2;for(int i =0; i < n; i++){
ans +=min(a[i], t * b[i]);
t -=min(a[i]/b[i], t);}
cout << ans << endl;}
D - Restricted Permutation
#include<bits/stdc++.h>#definerep(i, n)for(int i =0; i <(n); i++)usingnamespace std;using ll =longlong;intmain(){int n, m;
cin >> n >> m;
vector<int>in(n);
vector to(n, vector<int>());rep(i, m){int a, b;
cin >> a >> b;
a--, b--;
in[b]++;
to[a].push_back(b);}
priority_queue<int, vector<int>, greater<int>> pq;rep(i, n)if(in[i]==0) pq.push(i);
vector<int> ans;while(pq.size()){int v = pq.top(); pq.pop();
ans.push_back(v);for(auto u : to[v]){
in[u]--;if(in[u]==0) pq.push(u);}}if(ans.size()!= n){
cout <<-1<< endl;return0;}rep(i, n){if(i) cout <<" ";
cout << ans[i]+1;}
cout << endl;}