QOJ.ac
QOJ
ID | Submission ID | Problem | Hacker | Owner | Result | Submit time | Judge time |
---|---|---|---|---|---|---|---|
#1580 | #924621 | #9738. Make It Divisible | wallcrack | wallcrack | Failed. | 2025-03-03 12:16:05 | 2025-03-03 12:16:05 |
Details
Extra Test:
Accepted
time: 7ms
memory: 5120kb
input:
1 50000 1000000000 1000000000 1 999999998 1 999999996 1 999999994 1 999999992 1 999999990 1 999999988 1 999999986 1 999999984 1 999999982 1 999999980 1 999999978 1 999999976 1 999999974 1 999999972 1 999999970 1 999999968 1 999999966 1 999999964 1 999999962 1 999999960 1 999999958 1 999999956 1 9999...
output:
0 0
result:
ok single line: '0 0'
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#924621 | #9738. Make It Divisible | wallcrack | AC ✓ | 80ms | 6528kb | C++20 | 1.4kb | 2025-03-03 12:08:57 | 2025-03-03 12:08:57 |
answer
#include<bits/stdc++.h>
using namespace std;
int T;
void solve(int testcase)
{
long long n,k;
cin>>n>>k;
vector<int> a(n);
for(int i=0;i<n;i++)cin>>a[i];
int maxv=*max_element(a.begin(),a.end());
int minv=*min_element(a.begin(),a.end());
if(n==1 or maxv==minv)
{
cout<<k<<" "<<(1+k)*k/2<<endl;
return ;
}
stack<int> sta;
set<pair<int,int>> checkList;
for(int i=0;i<n;i++)
{
while(sta.size() and sta.top()>=a[i])
sta.pop();
if(sta.size())
checkList.insert({a[i],sta.top()});
sta.push(a[i]);
}
while(sta.size())sta.pop();
for(int i=n-1;i>=0;i--)
{
while(sta.size() and sta.top()>=a[i])
sta.pop();
if(sta.size())
checkList.insert({a[i],sta.top()});
sta.push(a[i]);
}
auto generate=[&k](int x,int y)
{
if(x<y)swap(x,y);
vector<int> fir,sec;
for(int i=1;i<=sqrt(x-y);i++)
{
if((x-y)%i==0)fir.push_back(i);
if((x-y)/i!=i)fir.push_back((x-y)/i);
}
for(auto ri:fir)
if(ri-y>=1 and ri-y<=k)
sec.push_back(ri-y);
return sec;
};
long long cnt=0,sum=0;
auto x=generate(maxv,minv);
for(int xi:x)
{
bool flag=true;
for(auto [u,v]:checkList)
{
if((u+xi)%(v+xi)!=0)
{
flag=false;
break;
}
}
if(flag)
{
cnt++;
sum+=xi;
}
}
cout<<cnt<<" "<<sum<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin>>T;
for(int i=1;i<=T;i++)solve(i);
return 0;
}