QOJ.ac

QOJ

ID提交记录ID题目HackerOwner结果提交时间测评时间
#1467#863357#9749. 小凯的省奖之梦Dukerkixjt05Failed.2025-01-19 17:13:312025-01-19 17:13:31

详细

Extra Test:

Accepted
time: 1783ms
memory: 5760kb

input:

500
abcdefghijklmnopacaa 36 73 53 65 48 70
abcdefghijklmnopacab 50 54 33 61 74 50
abcdefghijklmnopacac 54 70 37 51 55 43
abcdefghijklmnopacad 71 30 25 45 62 52
abcdefghijklmnopacae 37 28 25 54 66 47
abcdefghijklmnopacaf 59 47 46 55 48 58
abcdefghijklmnopacag 56 56 66 47 35 60
abcdefghijklmnopacah 46...

output:

100

result:

ok single line: '100'

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#863357#9749. 小凯的省奖之梦xjt05AC ✓2808ms5632kbC++237.0kb2025-01-19 16:10:532025-01-19 16:10:57

answer

#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
#include <unordered_map>
#define ll          int 
#define lowbit(x) (x & -x)
#define endl "\n"//                           交互题记得删除
using namespace std;
struct s
{
    string name;
    ll a[4];
    ll z1 = 0;//综测
    ll z2 = 0;
    ll b[4];
    ll sum = 0;
}p[25000];
bool cmp1(s x, s y)
{
    if (x.z1 != y.z1)
        return x.z1 > y.z1;
    else if (x.a[1] != y.a[1])
        return x.a[1] > y.a[1];
    else return x.name < y.name;
}
bool cmp2(s x, s y)
{
    if (x.z2 != y.z2)
        return x.z2 > y.z2;
    else if (x.b[1] != y.b[1])
        return x.b[1] > y.b[1];
    else return x.name < y.name;
}
bool cmpz2(s x, s y)
{
    return x.b[1] > y.b[1];
}
bool cmpz1(s x, s y)
{
    return x.a[1] > y.a[1];
}
bool cp(s x, s y)
{
    if (x.sum != y.sum)
        return x.sum > y.sum;
    else if (x.z1 + x.z2 != y.z1 + y.z2)
        return x.z1 + x.z2 > y.z1 + y.z2;
    else if (x.a[1] + x.b[1] != y.a[1] + y.b[1])
        return x.a[1] + x.b[1] > y.b[1] + y.a[1];
    else return x.name < y.name;
}
inline int read() {
    int x = 0, f = 0;
    char c = getchar();
    while (c > 57 || c < 48) {
        f |= c == 45;
        c = getchar();
    }
    while (c <= 57 && c >= 48) {
        x = (x << 3) + (x << 1) + c - 48;
        c = getchar();
    }
    return f ? -x : x;
}
int main()
{
   // fio();
    ll t;
    t = 1;
    while (t--)
    {
        ll n;
        n=read();
       ll l1 = (ll)(double(n) * 0.15);
        ll l2 = (ll)(double(n) * 0.25);
        ll l3 = (ll)(double(n) * 0.35);
        ll u1;
        ll u2;
        ll u3;
        ll d1, d2;
        ll u4;
        for (ll i = 1; i <= n; i++)//智,德,体
        {
            string f;
            cin >> f;
            p[i].name = f;
            ll x;
            for (ll j = 1; j <= 3; j++)
            {
                x=read();
                p[i].a[j] = x;
                p[i].z1 += x;
            }
            for (ll j = 1; j <= 3; j++)
            {
                x=read();
                p[i].b[j] = x;
                p[i].z2 += x;
            }
            if (p[i].name == "crazyzhk")
                u1 = 100 - p[i].a[1], u2 = 100 - p[i].b[1], u3 = p[i].a[1], u4 = p[i].b[1], d1 = p[i].z1, d2 = p[i].z2;
        }
        ll f, q, m;
        m=read();
        f=read();
        q=read();
        ll ans = 4e8;
        vector<ll>g;
        ll of = 0;
        for (ll i = u1; i >=0; i--)
        {
            for (ll j = u2; j >= 0; j--)
            {
                ll pd=0;
                if (i == u1 && j == u2)
                {
                    of = 1;
                }
                g.clear();
                ll cnt = f * i + q * j;
                for (ll z = 1; z <= n; z++)
                {
                    if (p[z].name == "crazyzhk")
                    {
                        p[z].z1 = d1 + i;
                        p[z].z2 = d2 + j;
                        p[z].a[1] = u3 + i, p[z].b[1] = u4 + j;
                        break;
                    }
                }
                //15 10 5
              //  sort(p+1,p+1+n,cmp1);
                for (ll z = 1; z <= n; z++)
                {
                    p[z].sum = 0;
                }
                sort(p + 1, p + 1 + n, cmpz1);
                for (ll z = 1; z <= n; z++)
                {
                   
                    g.push_back(p[z].a[1]);
                }
                ll r1 = (ll)((double)g.size() * 0.25);
                ll r2 = (ll)((double)g.size() * 0.45);
                ll r3 = (ll)((double)g.size() * 0.75);
                ll cn1 = l1, cn2 = l2, cn3 = l3;
                ll cs = 0;
                ll k1, k2, k3;
                for (auto j : g)
                {
                    cs++;
                    if (cs <= r1)
                    {
                        k1 = j;
                    }
                    else if (cs <= r2)
                    {
                        k2 = j;
                    }
                    else if (cs <= r3)
                    {
                        k3 = j;
                    }
                }
                sort(p + 1, p + 1 + n, cmp1);
                for (ll z = 1; z <= n; z++)
                {
                    if (p[z].a[1] >= k1 && cn1 > 0)
                    {
                        cn1--;
                        p[z].sum += 15;
                    }
                    else if (p[z].a[1] >= k2 && cn2 > 0)
                    {
                        cn2--;
                        p[z].sum += 10;
                    }
                    else if (p[z].a[1] >= k3 && cn3 > 0)
                    {
                        cn3--;
                        p[z].sum += 5;
                    }
                }
                /////////////////////////////////
                g.clear();
                sort(p + 1, p + 1 + n, cmpz2);
                for (ll z = 1; z <= n; z++)
                {
                   
                  
                        g.push_back(p[z].b[1]);
                }
                r1 = (ll)((double)g.size() * 0.25);
                r2 = (ll)((double)g.size() * 0.45);
                r3 = (ll)((double)g.size() * 0.75);
                cn1 = l1, cn2 = l2, cn3 = l3;
                cs = 0;
                for (auto j : g)
                {
                    cs++;
                    if (cs <= r1)
                    {
                        k1 = j;
                    }
                    else if (cs <= r2)
                    {
                        k2 = j;
                    }
                    else if (cs <= r3)
                    {
                        k3 = j;
                    }
                }
                sort(p + 1, p + 1 + n, cmp2);
                for (ll z = 1; z <= n; z++)
                {
                    if (p[z].b[1] >= k1 && cn1 > 0)
                    {
                        cn1--;
                        p[z].sum += 15;
                    }
                    else if (p[z].b[1] >= k2 && cn2 > 0)
                    {
                        cn2--;
                        p[z].sum += 10;
                    }
                    else if (p[z].b[1] >= k3 && cn3 > 0)
                    {
                        cn3--;
                        p[z].sum += 5;
                    }
                }
                sort(p + 1, p + 1 + n, cp);
                cs = 0;
                for (ll z= 1; z <= n; z++)
                {
                    cs++;
                    if (p[z].name == "crazyzhk" && cs <= m)
                    {
                        pd=1;
                        ans = min(ans, cnt);
                    }
                }
                if(pd==0)
                break;
                
            }
        }
        if (ans == 4e8)
            cout << "Surely next time" << endl;
        else cout << ans << endl;
    }
}