您的位置:首页 > 其它

Codeforces Round #134 (Div. 2)

2014-04-08 12:53 281 查看
A. Mountain Scenery

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
int n,k,i,m,mon[250];
while(~scanf("%d%d",&n,&k))
{
for(i=1;i<=2*n+1;i++) scanf("%d",&mon[i]);
for(i=2,m=0;i<=2*n;i=i+2)
{
if(mon[i]-mon[i-1]>=2&&mon[i]-mon[i+1]>=2)
{mon[i]--;m++;}
if(m==k) break;
}
for(i=1;i<=2*n+1;i++) cout<<mon[i]<<" ";
cout<<endl;
}
return 0;
}


B.
Airport

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
bool cmp1(int a,int b)
{
return a>b;
}
bool cmp2(int a,int b)
{
return a<b;
}
int main()
{
int n,m,N,air[1005],air1[1005],i,j,Max,Min;
while(~scanf("%d%d",&n,&m))
{
for(i=0;i<m;i++) {scanf("%d",&air[i]);air1[i]=air[i];}
Max=0;Min=0;N=n;
while(N>0)
{
sort(air,air+m,cmp1);
Max+=air[0];
air[0]--;
N--;
}
N=n;
while(N>0)
{
sort(air1,air1+m,cmp2);
for(j=0;j<m;j++)
if(air1[j]!=0)
{
Min+=air1[j];
air1[j]--;
break;
}
N--;
}
cout<<Max<<" "<<Min<<endl;
}
return 0;
}


C.
Ice Skating

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
struct point
{
int x;
int y;
}p[1005];
int n;
int father[1005];
int Find(int x)
{
return x==father[x] ? x : father[x]=Find(father[x]);
}
int main()
{
int i,j,ans;
while(~scanf("%d",&n)&&n)
{
memset(father,0,sizeof(father));
for(i=0;i<n;i++)
{
scanf("%d%d",&p[i].x,&p[i].y);
father[i]=i;
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(p[i].x==p[j].x||p[i].y==p[j].y)
{
if(Find(i)!=Find(j))
father[Find(i)]=j;
}
}
}
for(i=0,ans=0;i<n;i++)
{
if(father[i]==i) ans++;
}
cout<<ans-1<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: