QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#685242 | #9529. Farm Management | Y_J_Y# | WA | 1ms | 9836kb | C++20 | 2.3kb | 2024-10-28 18:26:25 | 2024-10-28 18:26:26 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define pd __gnu_pbds
inline ll read() {
ll x=0,w=1;char ch=getchar();
for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;
for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
return x*w;
}
inline void print(__int128 x){
if(x<0) {putchar('-');x=-x;}
if(x>9) print(x/10);
putchar(x%10+'0');
}
#define maxn 1000010
#define int long long
const double eps=1e-8;
#define int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
struct Node{
int w,l,r;
bool operator < (const Node &rhs) const {
return w>rhs.w;
}
}node[maxn];
int lowbit(int x) {
return x&-x;
}
int tree[maxn];int limit=2e5;
void Add(int pos,int val) {
while(pos<=limit) {
tree[pos]+=val;
pos+=lowbit(pos);
}
}
int Query(int pos) {
int ans=0;
while(pos) {
ans+=tree[pos];
pos-=lowbit(pos);
}
return ans;
}
int lsum1[maxn],lsum2[maxn];int lsum3[maxn];
signed main() {
int n=read();int m=read();
int sum=0;int sum2=0;
for(int i=1;i<=n;i++) {
node[i].w=read();node[i].l=read();node[i].r=read();
sum+=node[i].l;
sum2+=node[i].l*node[i].w;
}
sort(node+1,node+n+1);
for(int i=1;i<=n;i++) {
Add(i,node[i].r-node[i].l);
lsum1[i]=lsum1[i-1]+node[i].l*node[i].w;
lsum2[i]=lsum2[i-1]+node[i].r*node[i].w;
}
int ans=-1;
ans=max(ans,sum2+node[1].w*(m-sum));
for(int i=1;i<=n;i++) {
int opt=m-sum+node[i].l;
if(opt>=Query(i-1)) {
ans=max(ans,lsum2[i-1]+lsum1[n]-lsum1[i]+(opt-Query(i-1))*node[i].w);
}
else {
int l=1,r=i-1;int pos=-1;
while(l<=r) {
int mid=(l+r)>>1;
if(opt>=Query(mid)) {
pos=mid;
l=mid+1;
}
else {
r=mid-1;
}
}
if(pos==-1) {
ans=max(ans,lsum1[n]-node[i].l*node[i].w+opt*node[1].w);
}
else {
// if(pos>=i) {
// ans=max(ans,lsum2[i-1]+lsum1[n]-lsum1[i]+(opt-Query(i-1))*node[i].w);
// ans=max(ans,lsum2[pos-1]-node[i].r*node[i].w+lsum1[n]-lsum1[pos]+(opt-Query(pos-1))*node[pos].w);
// }
ans=max(ans,lsum2[pos-1]+lsum1[n]-lsum1[pos-1]-node[i].l*node[i].w+(opt-Query(pos-1))*node[pos].w);
}
}
// cout<<i<<" "<<ans<<endl;
}
cout<<ans<<endl;
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 7732kb
input:
5 17 2 3 4 6 1 5 8 2 4 4 3 3 7 5 5
output:
109
result:
ok single line: '109'
Test #2:
score: 0
Accepted
time: 0ms
memory: 9704kb
input:
12 62 503792 9 10 607358 1 3 600501 10 10 33249 4 4 774438 6 6 197692 3 6 495807 8 8 790225 5 9 77272 3 8 494819 4 9 894779 3 9 306279 5 6
output:
35204500
result:
ok single line: '35204500'
Test #3:
score: 0
Accepted
time: 1ms
memory: 9836kb
input:
15 32 835418 2 3 178262 1 3 527643 2 2 519710 1 1 774544 3 3 82312 1 1 808199 1 1 809396 1 3 255882 1 3 80467 1 3 874973 1 3 813965 1 2 198275 1 2 152356 1 3 802055 1 1
output:
22000255
result:
ok single line: '22000255'
Test #4:
score: 0
Accepted
time: 0ms
memory: 7768kb
input:
13 20 526447 1 1 807398 2 2 4167 1 2 944031 2 2 830685 2 2 394251 1 2 505011 1 2 968848 1 1 58170 1 3 32504 1 1 792273 3 3 196120 1 2 714507 1 1
output:
12878768
result:
ok single line: '12878768'
Test #5:
score: 0
Accepted
time: 0ms
memory: 9708kb
input:
13 32 582584 1 3 335440 3 3 971984 1 2 864169 1 2 528515 1 1 382399 1 2 459855 1 2 406909 2 3 66780 2 3 885118 3 3 434844 1 2 93331 1 3 502509 1 3
output:
22065034
result:
ok single line: '22065034'
Test #6:
score: 0
Accepted
time: 1ms
memory: 9708kb
input:
12 77 30244 1 7 518214 3 8 486001 8 9 152634 2 3 180255 3 4 791887 1 6 635820 2 9 881171 3 5 337905 3 8 683182 5 5 300786 3 6 339094 7 9
output:
50453764
result:
ok single line: '50453764'
Test #7:
score: -100
Wrong Answer
time: 1ms
memory: 9820kb
input:
10 3923726 826284 215861 638800 471693 146746 886003 140800 532315 684546 673434 604071 814259 170671 299465 525449 104262 689547 855391 215333 591975 803421 795321 31606 984783 103838 361911 601318 145693 450227 686945
output:
1605990455177
result:
wrong answer 1st lines differ - expected: '1597735409747', found: '1605990455177'