-
AcWing-136. 邻值查找
牛客竞赛-邻值查找
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include<bitset>
#include<list>
#include <algorithm>
#define pii pair<int,int>
#define pll pair<LL,LL>
#define pil pair<int,LL>
#define pli pair<LL,int>
#define pdd pair<db,db>
#define se second
#define fi first
#define endl '\n'
#define rep(i,a,b) for (register int i=a;i<b;++i)
#define per(i,a,b) for (register int i=a;i>b;--i)
#define MEM(a,x) memset(a,x,sizeof(a))
#define M(x) ((x)%MOD)
#define all(x) (x).begin(),(x).end()
#define db double
#define eps 1e-9
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
const int MOD=9901;
const int N=100010;
void solve()
{
int n,x;
set<int>s;
map<int,int>mp;
cin>>n;
rep(i,0,n){
cin>>x;
if(i){
auto p=s.lower_bound(x);
if(p==s.end()){
--p;
cout<<x-*p<<" "<<mp[*p]<<endl;
}else{
int ans=*p;
if(p!=s.begin()){
--p;
if(x-*p<=ans-x) ans=*p;
}
cout<<abs(ans-x)<<" "<<mp[ans]<<endl;
}
}
s.insert(x),mp[x]=i+1;
}
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _=1;
//cin>>_;
while(_--){
solve();
}
return 0;
}
-
牛客竞赛-Running Median
AcWing-106. 动态中位数
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include<bitset>
#include<list>
#include <algorithm>
#define pii pair<int,int>
#define pll pair<LL,LL>
#define pil pair<int,LL>
#define pli pair<LL,int>
#define pdd pair<db,db>
#define se second
#define fi first
#define endl '\n'
#define rep(i,a,b) for (register int i=a;i<b;++i)
#define per(i,a,b) for (register int i=a;i>b;--i)
#define MEM(a,x) memset(a,x,sizeof(a))
#define M(x) ((x)%MOD)
#define db double
#define eps 1e-9
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
const int MOD=9901;
const int N=25;
void solve()
{
int ca,n;
cin>>ca>>n;
cout<<ca<<" "<<n/2+n%2<<endl;
multiset<int>st;
int x,y;
cin>>x;
st.insert(x);
multiset<int>::iterator it=st.begin();
cout<<*it<<" ";
for(int i=2;i+1<=n;i+=2){
cin>>x>>y;
st.insert(x),st.insert(y);
if(x>=*it&&y>=*it) ++it;
if(x<*it&&y<*it) --it;
cout<<*it<<" ";
if((i/2+1)%10==0) cout<<endl;
}
if((n/2+n%2)%10) cout<<endl;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("title.in","r",stdin);
freopen("title.out","w",stdout);
#endif
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _=1;
cin>>_;
while(_--){
solve();
}
return 0;
}