Codeforces Round #322 (Div. 2)

A. Vasya the Hipster

#include <iostream>  
#include <cstdio>  
#include <algorithm>  
#include <string>  
#include <cmath>  
#include <cstring>  
#include <queue>  
#include <set>  
#include <map>  
#include <vector>  
using namespace std;
typedef long long ll;
const int N = 1e5+10;
int n, m;

int main()
{
	while(~scanf("%d%d", &n, &m))
	{
		if(n < m) swap(n, m);
		printf("%d %d\n", m, (n - m)/2);
	}
	return 0;
}

B. Luxurious Houses

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
#define inf 100005
int p[inf],res[inf];
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&p[i]);
	}
	int maxn=p[n-1];
	res[n-1]=0;
	for(int i=n-2;i>=0;i--)
	{
		if(maxn<p[i])
		{
			res[i]=0;
			maxn=p[i];
		}
		else
		{
			res[i]=maxn-p[i]+1;
		}
	}
	for(int i=0;i<n;i++)
	{
		if(i!=n-1) printf("%d ",res[i]);
		else printf("%d\n",res[i]);
	}
	return 0;
}

C. Developing Skills

#include <iostream>  
#include <cstdio>  
#include <algorithm>  
#include <string>  
#include <cmath>  
#include <cstring>  
#include <queue>  
#include <set>  
#include <map>  
#include <vector>  
using namespace std;
typedef long long ll;
const int N = 1e5+10;
int n, k;
int b[N];

int main()
{
	while(~scanf("%d%d", &n, &k))
	{
		int ans = 0, tmp = 0;
		for(int i = 0, a; i < n; i++)
		{
			scanf("%d", &a);
			ans += a / 10;
			if((a % 10) == 0) b[i] = 0;
			else
			{
				b[i] = (a / 10 + 1) * 10 - a;
				a = (a / 10 + 1) * 10;
			}
			tmp += (100 - a) / 10;
		}
		sort(b, b + n);
		for(int i = 0; i < n; i++)
		{
			if(b[i] == 0) continue;
			if(b[i] > k) break;
			ans++, k -= b[i];
		}
		k /= 10;
		ans += min(k, tmp);
		printf("%d\n", ans);
	}
	return 0;
}

D. Three Logos  

簡單的分類討論 

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <math.h>
#include <string>
using namespace std;
char s[200][200];
int main()
{
	int x1,y1,x2,y2,x3,y3,ai,bi;
	scanf("%d%d",&ai,&bi);
	x1=max(ai,bi),y1=min(ai,bi);
	scanf("%d%d",&ai,&bi);
	x2=max(ai,bi),y2=min(ai,bi);
	scanf("%d%d",&ai,&bi);
	x3=max(ai,bi),y3=min(ai,bi);
	int ans=x1*y1+x2*y2+x3*y3;
	int a=(int)sqrt(ans*1.0);
	int b=max(max(max(x1,y1),max(x2,y2)),max(x3,y3));
	if(a*a!=ans || b>a) printf("-1\n");
	else
	{
		int resx1=a-x1;
		int resy1=a-y1;
		for(int i=0;i<x1;i++)
		{
			for(int j=0;j<y1;j++)
			{
				s[i][j]='A';
			}
		}
		if(resx1==0)
		{
			int f1=0,f2=0;
			if(x2==a && x3==a && y2+y3==resy1)
			{
				for(int i=0;i<a;i++)
				{
					for(int j=y1;j<y1+y2;j++) s[i][j]='B';
					for(int j=y1+y2;j<y1+y2+y3;j++) s[i][j]='C';
				}
				printf("%d\n",a);
				for(int i=0;i<a;i++) printf("%s\n",s[i]);
				return 0;
			}
			int hx1=0,hx2=0;
			if(x2==resy1) hx1=y2;
			else if (y2==resy1) hx1=x2;
			if(x3==resy1) hx2=y3;
			else if(y3==resy1) hx2=x3;
			if(hx1==0 || hx2==0) 
			{
				printf("-1\n");
				return 0;
			}
			else
			{
				for(int j=y1;j<a;j++)
				{
					for(int i=0;i<hx1;i++) s[i][j]='B';
					for(int i=hx1;i<a;i++) s[i][j]='C';
				}
				printf("%d\n",a);
				for(int i=0;i<a;i++) printf("%s\n",s[i]);
				return 0;
			}
		}
		else
		{
			if(x3==a && y3==resy1 && ((x2==y1 && y2==resx1) || (x2==resx1 && y2==y1)))
			{
				for(int i=0;i<a;i++)
					for(int j=y1;j<a;j++) s[i][j]='C';
				for(int i=x1;i<a;i++)
					for(int j=0;j<y1;j++) s[i][j]='B';
				printf("%d\n",a);
				for(int i=0;i<a;i++) printf("%s\n",s[i]);
				return 0;	
			}
			else if(x3==a &&y3==resx1 && ((x2==x1&&y2==resy1) || (x2==resy1&&y2==x1)))
			{
				for(int i=0;i<x1;i++)
					for(int j=y1;j<a;j++) s[i][j]='B';
				for(int i=x1;i<a;i++)
					for(int j=0;j<a;j++) s[i][j]='C';
				printf("%d\n",a);
				for(int i=0;i<a;i++) printf("%s\n",s[i]);
				return 0;
			}
			else if(x2==a &&y2==resx1 && ((x3==resy1&&y3==x1) || (x3==x1&&y3==resy1)))
			{
				for(int i=x1;i<a;i++)
					for(int j=0;j<a;j++) s[i][j]='B';
				for(int i=0;i<x1;i++)
					for(int j=y1;j<a;j++) s[i][j]='C';
				printf("%d\n",a);
				for(int i=0;i<a;i++) printf("%s\n",s[i]);
				return 0;
			}
			else if(x2==a &&y2==resy1 &&((x3==resx1&&y3==y1) || (x3==y1&&y3==resx1)))
			{
				for(int i=0;i<a;i++)
					for(int j=y1;j<a;j++) s[i][j]='B';
				for(int i=x1;i<a;i++)
					for(int j=0;j<y1;j++) s[i][j]='C';
				printf("%d\n",a);
				for(int i=0;i<a;i++) printf("%s\n",s[i]);
				return 0;
			}
			else
			{
				printf("-1\n");
				return 0;
			}
		}
	}
	return 0;
}

E. Kojiro and Furrari


F.Zublicanes and Mumocrates



發佈了52 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章