QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#93782 | #6194. Knapsack Problem | EwiGKeiT | WA | 2ms | 3776kb | C++14 | 4.2kb | 2023-04-02 13:28:25 | 2023-04-02 13:28:27 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL MOD=1e9+7;
const LL INF=1e9;
void rd(LL &x)
{
x=0; LL fl=1; char c=getchar();
while (!isdigit(c)) { if (c=='-') fl=-1;c=getchar(); }
while (isdigit(c)) { x=(x<<1)+(x<<3)+(c^48);c=getchar(); }
x*=fl;
return;
}
LL T,k,c[25],a[25];
vector<LL> v[25];
pair<LL,LL> Co[25];
bool vis[25];
signed main()
{
v[1].push_back(0),v[1].push_back(1); //3
v[2].push_back(0),v[2].push_back(2); //5
v[3].push_back(1),v[3].push_back(2); //6
v[4].push_back(0),v[4].push_back(1),v[4].push_back(2); //7
v[5].push_back(0),v[5].push_back(3); //9
v[6].push_back(1),v[6].push_back(3); //10
v[7].push_back(0),v[7].push_back(1),v[7].push_back(3); //11
v[8].push_back(2),v[8].push_back(3); //12
v[9].push_back(0),v[9].push_back(2),v[9].push_back(3); //13
v[10].push_back(1),v[10].push_back(2),v[10].push_back(3); //14
v[11].push_back(0),v[11].push_back(1),v[11].push_back(2),v[11].push_back(3); //15
rd(T);
while (T--)
{
rd(k);
if (k==2)
{
for (LL i=1;i<4;i++) rd(c[i]);
for (LL i=0;i<2;i++) rd(a[i]);
LL ans=c[1]*a[0]+c[2]*a[1];
if (c[3]-c[1]-c[2]>0) ans+=min(a[0],a[1])*(c[3]-c[1]-c[2]);
printf("%lld\n",ans);
}
if (k==3)
{
for (LL i=1;i<8;i++) rd(c[i]);
for (LL i=0;i<3;i++) rd(a[i]);
Co[1]=make_pair(c[3]-c[1]-c[2],1);
Co[2]=make_pair(c[5]-c[1]-c[4],2);
Co[3]=make_pair(c[6]-c[2]-c[4],3);
Co[4]=make_pair(c[7]-c[1]-c[2]-c[4],4);
LL ans=c[1]*a[0]+c[2]*a[1]+c[4]*a[2];
memset(vis,0,sizeof vis);
for (LL i=1;i<=4;i++)
{
LL max=0,maxi=0;
for (LL j=1;j<=4;j++)
if (!vis[j])
{
LL M=INF;
for (auto k:v[Co[j].second])
M=min(M,a[k]);
if (Co[j].first*M>max)
{
max=Co[j].first*M;
maxi=j;
}
}
if (max==0) break;
ans+=max;
LL M=INF;
for (auto k:v[Co[maxi].second])
M=min(M,a[k]);
for (auto k:v[Co[maxi].second])
a[k]-=M;
vis[maxi]=true;
}
printf("%lld\n",ans);
}
if (k==4)
{
for (LL i=1;i<16;i++) rd(c[i]);
for (LL i=0;i<4;i++) rd(a[i]);
Co[1]=make_pair(c[3]-c[1]-c[2],1);
Co[2]=make_pair(c[5]-c[1]-c[4],2);
Co[3]=make_pair(c[6]-c[2]-c[4],3);
Co[4]=make_pair(c[7]-c[1]-c[2]-c[4],4);
Co[5]=make_pair(c[9]-c[1]-c[8],5);
Co[6]=make_pair(c[10]-c[2]-c[8],6);
Co[7]=make_pair(c[11]-c[1]-c[2]-c[8],7);
Co[8]=make_pair(c[12]-c[4]-c[8],8);
Co[9]=make_pair(c[13]-c[1]-c[4]-c[8],9);
Co[10]=make_pair(c[14]-c[2]-c[4]-c[8],10);
Co[11]=make_pair(c[15]-c[1]-c[2]-c[4]-c[8],11);
LL ans=c[1]*a[0]+c[2]*a[1]+c[4]*a[2]+c[8]*a[3];
memset(vis,0,sizeof vis);
for (LL i=1;i<=11;i++)
{
LL max=0,maxi=0;
for (LL j=1;j<=11;j++)
if (!vis[j])
{
LL M=INF;
for (auto k:v[Co[j].second])
M=min(M,a[k]);
if (Co[j].first*M>max)
{
max=Co[j].first*M;
maxi=j;
}
}
if (max==0) break;
ans+=max;
LL M=INF;
for (auto k:v[Co[maxi].second])
M=min(M,a[k]);
for (auto k:v[Co[maxi].second])
a[k]-=M;
vis[maxi]=true;
}
printf("%lld\n",ans);
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 3552kb
input:
3 2 1 2 4 4 5 3 3226252 19270256 2430652 1187613 12496062 10286165 17494834 24 85 34 4 901133 6693218 13245489 14740234 16186210 11382783 19277321 3855635 16523184 10168517 16195031 971041 10303441 8395899 11618555 529321239 218214127 92942310 207467810
output:
18 1949753378 7832404777567179
result:
ok 3 number(s): "18 1949753378 7832404777567179"
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3776kb
input:
100 4 4488409 9842893 14331290 11289097 15777479 21131954 25620334 6146092 10634508 15988956 20477387 17435190 21923584 27278027 31766493 200477197 258791439 590664017 982949628 4 5484152 19851747 25335961 6555937 12039831 26407861 31891996 10897184 16381166 30749333 36233145 17453055 22937114 37304...
output:
16156444320083421 24565535429631234 29418799514760027 30685727712782520 21026118053726857 27272339796311010 28831028447377015 34577147721425537 9058894962996375 21525085254465501 6657185626333883 16750628297036040 11217846865301187 12674726744043780 33873234230125448 3890236872169782 319038768614465...
result:
wrong answer 3rd numbers differ - expected: '29418802996321901', found: '29418799514760027'