QOJ.ac
QOJ
ID | 提交记录ID | 题目 | Hacker | Owner | 结果 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|
#1464 | #863357 | #9749. 小凯的省奖之梦 | Dukerki | xjt05 | Failed. | 2025-01-19 17:08:29 | 2025-01-19 17:08:29 |
詳細信息
Extra Test:
Accepted
time: 1ms
memory: 5632kb
input:
500 abcdefghijklmnopacaa 96 93 99 100 100 95 abcdefghijklmnopacab 99 95 90 97 96 100 abcdefghijklmnopacac 99 94 91 98 90 95 abcdefghijklmnopacad 94 94 97 95 92 92 abcdefghijklmnopacae 92 94 100 98 92 95 abcdefghijklmnopacaf 98 94 90 100 99 100 abcdefghijklmnopacag 99 92 99 92 97 92 abcdefghijklmnopa...
output:
0
result:
ok single line: '0'
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#863357 | #9749. 小凯的省奖之梦 | xjt05 | AC ✓ | 2808ms | 5632kb | C++23 | 7.0kb | 2025-01-19 16:10:53 | 2025-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;
}
}