Codeforces Round 881 (Div. 3)

Codeforces Round 881 (Div. 3)

A:

void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int ans=0;
int l=1;
int r=n;
for(int num=0; ; num++){
if(r-num<=l+num) break;
ans+=a[r-num]-a[l+num];

}
cout<<ans<<endl;
}

 

B:

void solve(){
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=abs(a[i]);
}
cout<<sum<<" ";
vector<int>p;
int l=1;
while(l<=n){
if(a[l]<0){
p.push_back(1);
l++;
break;
}
l++;
}
while(l<=n){
if(p[p.size()-1]==1){
if(a[l]<=0) {
l++; continue;
}
else{
p.push_back(2);
l++;
}
}
else{
if(a[l]>=0){
l++; continue;
}
else{
p.push_back(1);
l++;
}
}
}
// cout<<p.size()<<"asfd"<<endl;
int num=p.size();
if(num==0){
cout<<num<<endl;
return ;
}
if(num==1 || num==2){
cout<<"1\n";
return ;
}

cout<<((num+1)/2)<<endl;
return ;
}

 

C:

void solve(){
int n;
cin>>n;
int sum=0;
while(n!=0){
sum+=n;
n>>=1;
}
cout<<sum<<endl;
}

 

D:

void dfs(int x,int fa){

for(auto v:tr[x]){
if(v==fa) continue;
dfs(v,x);
num[x]+=num[v];
}
if(1>num[x]) num[x]=1;
}
void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
tr[i].clear();
num[i]=0;
}
for(int i=1;i<n;i++){
int x,y; cin>>x>>y;
tr[x].push_back(y);
tr[y].push_back(x);
}
dfs(1,0);
int m;
cin>>m;
for(int i=1;i<=m;i++){
int x,y; cin>>x>>y;
cout<<num[x]*num[y]<<endl;
}
}

E:

bool judge(int len){
for(int i=1;i<=n;i++) num[i]=0;
for(int i=1;i<=len;i++){
num[a[i]]=1;
}
for(int i=1;i<=n;i++){
pre[i]=pre[i-1]+num[i];
}
for(int i=1;i<=m;i++){
int l=e[i].l;
int r=e[i].r;
if(pre[r]-pre[l-1] >(r-l+1-pre[r]+pre[l-1])) {
return 1;
}
}
return 0;
}

void solve(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>e[i].l>>e[i].r;
}
cin>>q;
for(int i=1;i<=q;i++){
cin>>a[i];
}
int l=1,r=q;
if(judge(q)==0){
cout<<"-1"<<endl;
return ;
}
while(l<r){
int mid=(l+r)>>1;
if(judge(mid)==1){
r=mid;
}
else l=mid+1;
}
if(l>q){
cout<<"-1"<<endl;
}
else cout<<l<<endl;
}
 
posted @ 2023-06-21 00:35  橘赴亦梦人ω  阅读(80)  评论(0编辑  收藏  举报