CF#768(Div.2)
CF只有两个小时的比赛时间,一旦出了点“小”差错 基本就废了
B题后来按照扭曲的题意想了好久一直WA,1h ran out很慌地看了C并A了
后来发现B实在简单很后悔又把B A了,然而比赛还剩18min,我还在rk2800
想着有没有可能把D做了 但看到standings上人均30min才A掉 于是感觉不大可能
比赛前9min有了思路并且显然正确,赶着写,但debug时Contest is over显示在屏幕上 宣告结束
又一次下分 看来这种高强度考场环境还是要多多参加益善!再下几次分看看表现会不会好些吧
附D题纪念比赛结束后6min自认为可以A的code,等可以提交了再提交以下
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,k,a[N],bu[N];
void sol(){
cin>>n>>k;for(int i=1;i<=n;i++)bu[i]=0;
for(int i=1;i<=n;i++)cin>>a[i],bu[a[i]]++;
int cnt=0,x=0,y=1e9;
for(int i=1,j=1;i<=n;i++){
while(j<=n&&cnt-(n-cnt)<k)cnt+=bu[j],j++;
if(cnt-(n-cnt)>=k){
if(j-i<y-x)x=i,y=j;
}cnt-=bu[i];
}cout<<x<<' '<<y-1<<'\n';
int c=0,las=0;
for(int o=1;o<=n;o++){
c+=(x<=a[o]&&a[o]<=y);
if(c>(o-c)&&k!=1){k--;cout<<las+1<<' '<<o<<'\n';las=o;c=0;}
}cout<<las+1<<' '<<n<<'\n';
}
int main(){int t;cin>>t;while(t--)sol();}