QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#619785 | #7904. Rainbow Subarray | xjt05 | TL | 0ms | 3588kb | C++23 | 2.3kb | 2024-10-07 15:23:50 | 2024-10-07 15:23:51 |
Judging History
answer
#include<iostream>
#include<set>
#include<bits/stdc++.h>
#define test(i) cout << #i << " "<< i << " " << endl;
using namespace std;
typedef long long ll;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9')
x=x*10+ch-'0',ch=getchar();
return x*f;
}
ll a[500065];
ll n, m;
bool ck(ll x)
{
set<pair<ll, ll>>q;
ll pd = 0;
for (ll i = 1; i <= n; i++)
{
if (i <= x)
{
q.insert({ a[i],i });
if (i == x)
{
ll u = (q.size()+1) / 2;
auto j = q.begin();
ll ans = 1;
while (ans < u)
{
ans++;
j++;
}
ll op = (*j).first;
ll cnt = 0;
for (ll k = 1; k <= x; k++)
{
cnt += abs(op - a[k]);
}
if (cnt <= m)
{
pd = 1;
break;
}
}
}
else
{
q.insert({ a[i],i });
q.erase({ a[i - x],i - x });
ll u = (q.size() + 1) / 2;
auto j = q.begin();
ll ans = 1;
while (ans < u)
{
ans++;
j++;
}
ll op = (*j).first;
ll cnt = 0;
for (ll k = i - x+1; k <= i; k++)
{
cnt += abs(op - a[k]);
}
if (cnt <= m)
{
pd = 1;
break;
}
}
}
if (pd)
return 1;
else
return 0;
}
signed main()
{
ll t;
t=read();
while (t--)
{
cin >> n >> m;
for (ll i = 1; i <= n; i++)
{
a[i]=read();
a[i] -= i;
}
ll l = 1, r = n;
while (l <= r)
{
ll mid = (l + r) >> 1;
if (ck(mid))
{
l = mid + 1;
}
else
r = mid - 1;
}
cout << r << endl;
}
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3588kb
input:
5 7 5 7 2 5 5 4 11 7 6 0 100 3 4 5 99 100 5 6 1 1 1 1 1 5 50 100 200 300 400 500 1 100 3
output:
4 3 5 1 1
result:
ok 5 lines
Test #2:
score: -100
Time Limit Exceeded
input:
11102 2 167959139 336470888 134074578 5 642802746 273386884 79721198 396628655 3722503 471207868 6 202647942 268792718 46761498 443917727 16843338 125908043 191952768 2 717268783 150414369 193319712 6 519096230 356168102 262263554 174936674 407246545 274667941 279198849 9 527268921 421436316 3613460...
output:
1 4 3 2 6 5 7 2 4 1 4 1 1 3 2 2 7 8 7 7 1 7 6 2 4 3 1 6 7 7 3 4 3 9 3 8 6 6 3 1 6 3 1 2 4 6 4 6 4 1 4 7 1 6 3 5 6 6 1 7 5 3 1 6 4 5 3 2 2 6 2 3 10 1 4 3 2 4 5 1 7 5 5 5 8 5 3 6 3 5 5 8 5 4 5 2 1 5 2 3 3 4 8 1 3 1 2 2 8 3 1 6 8 1 8 4 5 6 6 8 4 8 3 2 8 4 5 6 2 6 2 4 1 5 4 5 3 2 4 1 2 1 4 5 8 3 7 3 3 3...