QOJ.ac

QOJ

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

詳細信息

Extra Test:

Accepted
time: 2571ms
memory: 5632kb

input:

500
abcdefghijklmnopacaa 68 32 74 64 55 35
abcdefghijklmnopacab 51 74 29 26 45 56
abcdefghijklmnopacac 33 48 39 62 72 27
abcdefghijklmnopacad 27 25 73 37 60 75
abcdefghijklmnopacae 41 67 57 70 56 43
abcdefghijklmnopacaf 63 59 54 65 52 65
abcdefghijklmnopacag 28 65 45 68 63 41
abcdefghijklmnopacah 44...

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;
    }
}