#include<bits/stdc++.h>
#include "tickets.h"
#define MAXN 1507
using namespace std;
const long long inf=1e15;
int n,m,sol[MAXN],k,rest[MAXN],br,maxs,ind[MAXN];
long long pref[MAXN][MAXN],suff[MAXN][MAXN];
pair<int,int> s[MAXN][MAXN];
vector<int> curr;
vector< vector<int> > res;
int li[MAXN][MAXN*20],tim,used[MAXN];
long long dp[MAXN][MAXN*20],ans;
long long ff(int pos,int balance){
if(balance<0 or balance>20*m)return -inf;
if(pos==-1 and balance==10*m)return 0;
else if(pos==-1)return -inf;
if(li[pos][balance]==tim)return dp[pos][balance];
li[pos][balance]=tim;
dp[pos][balance]=-inf;
for(int i=0;i<=k;i++){
dp[pos][balance]=max(dp[pos][balance],ff(pos-1,balance-i+k-i)+suff[ind[pos]][k-i]-pref[ind[pos]][i]);
}
return dp[pos][balance];
}
void solve(int pos,int balance){
if(pos==-1)return;
for(int i=0;i<=k;i++){
if(ff(pos,balance)==ff(pos-1,balance-i+k-i)+suff[ind[pos]][k-i]-pref[ind[pos]][i]){
sol[ind[pos]]=i; rest[ind[pos]]=k-i;
solve(pos-1,balance-i+k-i);
return;
}
}
}
long long find_maximum(int K,vector< vector<int> > x){
n=int(x.size()); m=int(x[0].size()); k=K;
res.resize(n);
for(int i=0;i<n;i++){
res[i].resize(m); ind[i]=i;
for(int f=0;f<m;f++){
s[i][f]={x[i][f],f};
res[i][f]=-1;
}
sort(s[i],s[i]+m);
for(int f=0;f<m;f++){
pref[i][f+1]=s[i][f].first;
pref[i][f+1]+=pref[i][f];
}
for(int f=m-1;f>=0;f--){
suff[i][m-f]=s[i][f].first;
suff[i][m-f]+=suff[i][m-f-1];
}
}
random_shuffle(ind,ind+n);
tim++; solve(n-1,10*m);
ans=ff(n-1,10*m);
for(int i=0;i<k;i++){
br=n/2; tim++;
for(int f=0;f<n/2;f++){
maxs=n;
for(int w=0;w<n;w++){
if(sol[w]>sol[maxs] and used[w]!=tim)maxs=w;
}
res[maxs][s[maxs][sol[maxs]-1].second]=i;
sol[maxs]--; used[maxs]=tim;
}
for(int f=0;f<n;f++){
if(used[f]!=tim){
res[f][s[f][m-rest[f]].second]=i;
rest[f]--;
}
}
}
allocate_tickets(res);
return ans;
}
/*
int main(){
cout<<find_maximum(2, {{0, 2, 5},{1, 1, 3}})<<"\n";
}
*/
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
468 KB |
Output is correct |
4 |
Incorrect |
1 ms |
2004 KB |
Contestant returned 18919508441 but the tickets gives a total value of 18862974431 |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
468 KB |
Output is correct |
4 |
Correct |
2 ms |
2260 KB |
Output is correct |
5 |
Correct |
22 ms |
11724 KB |
Output is correct |
6 |
Correct |
522 ms |
144032 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
468 KB |
Output is correct |
4 |
Correct |
16 ms |
3536 KB |
Output is correct |
5 |
Correct |
744 ms |
31052 KB |
Output is correct |
6 |
Execution timed out |
3083 ms |
109308 KB |
Time limit exceeded |
7 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
468 KB |
Output is correct |
4 |
Correct |
29 ms |
3552 KB |
Output is correct |
5 |
Correct |
1433 ms |
31480 KB |
Output is correct |
6 |
Correct |
529 ms |
2712 KB |
Output is correct |
7 |
Incorrect |
40 ms |
36044 KB |
Contestant returned 3777370616692 but the tickets gives a total value of 3777350955124 |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
2 ms |
2260 KB |
Output is correct |
3 |
Correct |
3 ms |
2644 KB |
Output is correct |
4 |
Correct |
11 ms |
3336 KB |
Output is correct |
5 |
Correct |
16 ms |
3560 KB |
Output is correct |
6 |
Correct |
23 ms |
3612 KB |
Output is correct |
7 |
Correct |
2 ms |
596 KB |
Output is correct |
8 |
Correct |
2 ms |
2132 KB |
Output is correct |
9 |
Correct |
19 ms |
3600 KB |
Output is correct |
10 |
Correct |
19 ms |
3540 KB |
Output is correct |
11 |
Correct |
26 ms |
3592 KB |
Output is correct |
12 |
Correct |
26 ms |
3632 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
2 ms |
2260 KB |
Output is correct |
3 |
Correct |
3 ms |
2644 KB |
Output is correct |
4 |
Correct |
11 ms |
3336 KB |
Output is correct |
5 |
Correct |
16 ms |
3560 KB |
Output is correct |
6 |
Correct |
23 ms |
3612 KB |
Output is correct |
7 |
Correct |
2 ms |
596 KB |
Output is correct |
8 |
Correct |
2 ms |
2132 KB |
Output is correct |
9 |
Correct |
19 ms |
3600 KB |
Output is correct |
10 |
Correct |
19 ms |
3540 KB |
Output is correct |
11 |
Correct |
26 ms |
3592 KB |
Output is correct |
12 |
Correct |
26 ms |
3632 KB |
Output is correct |
13 |
Correct |
24 ms |
12836 KB |
Output is correct |
14 |
Correct |
57 ms |
21164 KB |
Output is correct |
15 |
Correct |
732 ms |
31036 KB |
Output is correct |
16 |
Correct |
1444 ms |
31504 KB |
Output is correct |
17 |
Correct |
1 ms |
596 KB |
Output is correct |
18 |
Correct |
8 ms |
8148 KB |
Output is correct |
19 |
Correct |
5 ms |
7252 KB |
Output is correct |
20 |
Correct |
930 ms |
30380 KB |
Output is correct |
21 |
Correct |
943 ms |
30144 KB |
Output is correct |
22 |
Correct |
1308 ms |
30564 KB |
Output is correct |
23 |
Correct |
1309 ms |
30412 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
468 KB |
Output is correct |
4 |
Incorrect |
1 ms |
2004 KB |
Contestant returned 18919508441 but the tickets gives a total value of 18862974431 |
5 |
Halted |
0 ms |
0 KB |
- |