Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <vector>
- #include <cmath>
- #include <algorithm>
- #include <iomanip>
- using namespace std;
- struct quest
- {
- int lev;
- bool b;
- };
- bool ls(quest a, quest b)
- {
- return a.lev < b.lev;
- }
- int main()
- {
- //freopen("input.txt","r",stdin);
- int n,k;
- cin >> n >> k;
- vector<quest> a(n);
- for (int i=0;i<n;++i)
- {
- cin >> a[i].lev;
- a[i].b=1;
- }
- int q;
- cin >>q;
- double mn=2000;
- double mx=-1;
- int tickets_found = 0;
- for (int i=0;i<q;++i)
- {
- int s=0;
- for (int j=0;j<(n/k);++j)
- {
- int h;
- cin >> h;
- if (j==0 && a[h-1].b)
- ++tickets_found;
- a[h-1].b=0;
- s+=a[h-1].lev;
- }
- double diff = double(s)/(n/k);
- mn = min(mn,diff);
- mx = max(mx,diff);
- }
- if (tickets_found<k) {
- sort(a.begin(),a.end(),ls);
- int i=0;
- int s=0;
- for (int j=0;j<n;j++) {
- if (a[j].b)
- {
- s+=a[j].lev;
- ++i;
- }
- if (i>=(n/k)) break;
- }
- double diff = double(s)/(n/k);
- if (i>=n/k)
- mn=min(mn,diff);
- i=0;
- s=0;
- for (int j=n-1;j>=0;j--) {
- if (a[j].b)
- {
- s+=a[j].lev;
- ++i;
- }
- if (i>=(n/k)) break;
- }
- diff = double(s)/(n/k);
- if (i>=n/k)
- mx=max(mx,diff);
- }
- cout << setprecision (10) <<mn <<' ' <<mx <<endl;
- }
Add Comment
Please, Sign In to add comment