QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#370431 | #4233. Reset | InfinityNS | WA | 1063ms | 19400kb | C++20 | 2.0kb | 2024-03-29 07:26:34 | 2024-03-29 07:26:34 |
Judging History
answer
#include<bits/stdc++.h>
#define ff first
#define ss second
#define pb push_back
typedef long long ll;
using namespace std;
typedef pair<int,int> pii;
const int mod=998244353;
inline int add(int x,int y){int ret=x+y;if(ret>=mod)ret-=mod;return ret;}
inline int sub(int x,int y){int ret=x-y;if(ret<0)ret+=mod;return ret;}
inline int mul(int x,int y){return ((ll)x*y)%mod;}
inline int step(int base,int pw){int ret=1;while(pw){if(pw&1)ret=mul(ret,base);base=mul(base,base);pw>>=1;}return ret;}
inline int invv(int x){return step(x,mod-2);}
const int maxn=2e5+10;
ll c,n,t[maxn],d[maxn];
using int128=__int128_t;
typedef pair<ll,ll> pll;
bool check(ll mid){
int128 total=(mid+1)*min(n,c);
multiset<pair<pll,ll>>st;
for(int i=1;i<=n;i++){
st.insert({ {d[i],t[i]},0 });
}
ll sum=0;
ll cpc=c;
while(st.size() && total>0){
pair<pll,ll>x=(*st.rbegin());
st.erase(st.find(x));
int128 d=min(min(total,(int128)x.ff.ss/x.ff.ff), (int128)mid+1-x.ss );
///printf("%lld %lld %lld\n",d,x.ff.ff,x.ff.ss);
x.ss+=d;
x.ff.ss-=d*x.ff.ff;
total-=d;
x.ff.ff=min(x.ff.ff,x.ff.ss);
if(x.ss==mid+1 || x.ff.ss==0){
sum+=x.ff.ss;
///printf("%lld CPC\n",cpc);
if(x.ss==mid+1)cpc--;
continue;
}
st.insert(x);
}
while(st.size()){
sum+=(*st.begin()).ff.ss;
st.erase(st.begin());
}
///printf("%lld %lld AA\n",sum,cpc);
return sum<=cpc;
}
int main(){
///freopen("test.txt","r",stdin);
scanf("%lld %lld",&n,&c);
for(int i=1;i<=n;i++){
scanf("%lld %lld",&t[i],&d[i]);
}
//check(249);
//return 0;
ll l=0;
ll r=1e9;
ll sr,ret=0;
while(l<=r){
sr=(l+r)/2;
if(check(sr)){
r=sr-1;
ret=sr;
}
else l=sr+1;
}
printf("%lld\n",ret);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3676kb
input:
3 5 17 5 5 2 15 4
output:
3
result:
ok single line: '3'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3804kb
input:
2 1345 1344 1 10 10
output:
0
result:
ok single line: '0'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3776kb
input:
1 1000000000 1000000000 1
output:
0
result:
ok single line: '0'
Test #4:
score: 0
Accepted
time: 1ms
memory: 3788kb
input:
3 2345 333 1 444 2 555 3
output:
0
result:
ok single line: '0'
Test #5:
score: 0
Accepted
time: 0ms
memory: 4024kb
input:
1 500 1000 2
output:
250
result:
ok single line: '250'
Test #6:
score: 0
Accepted
time: 1ms
memory: 4060kb
input:
1 499 1000 2
output:
250
result:
ok single line: '250'
Test #7:
score: 0
Accepted
time: 1ms
memory: 4060kb
input:
3 2345 3333 5 4444 6 5555 6
output:
646
result:
ok single line: '646'
Test #8:
score: 0
Accepted
time: 1ms
memory: 3764kb
input:
8 6 40 10 40 10 40 10 40 10 40 10 20 5 4 3 5 3
output:
4
result:
ok single line: '4'
Test #9:
score: 0
Accepted
time: 0ms
memory: 4060kb
input:
8 6 40 10 40 10 40 10 40 10 40 10 20 5 7 3 5 3
output:
4
result:
ok single line: '4'
Test #10:
score: 0
Accepted
time: 0ms
memory: 3744kb
input:
5 4 29 8 30 7 2000 1000 2000 1000 2000 1000
output:
3
result:
ok single line: '3'
Test #11:
score: 0
Accepted
time: 1ms
memory: 3732kb
input:
27 19 21 5 14 5 14 5 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000
output:
4
result:
ok single line: '4'
Test #12:
score: 0
Accepted
time: 0ms
memory: 3776kb
input:
24 21 25 8 13 7 13 7 13 7 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000 3000 1000
output:
3
result:
ok single line: '3'
Test #13:
score: 0
Accepted
time: 1ms
memory: 3792kb
input:
4 2 10 10 10 10 10 10 9 2
output:
3
result:
ok single line: '3'
Test #14:
score: 0
Accepted
time: 721ms
memory: 12656kb
input:
110000 60000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 100000 222200000 10000...
output:
99999
result:
ok single line: '99999'
Test #15:
score: -100
Wrong Answer
time: 1063ms
memory: 19400kb
input:
200000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 10000...
output:
0
result:
wrong answer 1st lines differ - expected: '199999999999999', found: '0'