Codeforces Round #281 (Div. 2) solution report A. B. C. D .,
A-Vasya and Football
Pure simulation .. It is difficult to find a place that does not conform to common football knowledge ..
The Code is as follows:
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL __int64const int INF=0x3f3f3f3f;struct node{ int num, time, f; char ah;}fei[100];int cmp(node x, node y){ return x.time<y.time;}int foul(char c){ if(c=='y') return 1; return 2;}int main(){ char s1[30], s2[30], c1, c2; int n, i, j, t, cnt=0, num, flag; scanf("%s%s",s1,s2); scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d %c %d %c",&t,&c1,&num,&c2); flag=0; for(j=0;j<cnt;j++){ if(fei[j].ah==c1&&fei[j].num==num) { fei[j].f+=foul(c2); if(fei[j].f-foul(c2)<2) fei[j].time=t; flag=1; break; } } if(!flag){ fei[cnt].num=num; fei[cnt].time=t; fei[cnt].ah=c1; fei[cnt++].f=foul(c2); } } sort(fei,fei+cnt,cmp); for(i=0;i<cnt;i++){ if(fei[i].f>=2){ if(fei[i].ah=='h') printf("%s ",s1); else printf("%s ",s2); printf("%d %d\n",fei[i].num,fei[i].time); } } return 0;}
B-Vasya and Wrestling
Question .. Compare and then compare the lexicographic orders based on the question. I have nothing to say ..
The Code is as follows:
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL __int64const int INF=0x3f3f3f3f;LL a[210000], b[210000];int main(){ LL cnt1=0, cnt2=0, n, x, s1=0, s2=0, t; int i; scanf("%I64d",&n); while(n--){ scanf("%I64d",&x); if(x>0){ a[cnt1++]=x; s1+=x; } else{ b[cnt2++]=-x; s2-=x; } if(n==0) t=x>0?1:2; } if(s1>s2) printf("first\n"); else if(s1<s2) printf("second\n"); else{ int flag=0; for(i=0;i<cnt1&&i<cnt2;i++){ if(a[i]>b[i]){ flag=1; break; } else if(a[i]<b[i]){ flag=2; break; } } if(flag==1) puts("first"); else if(flag==2) puts("second"); else if(cnt1>cnt2) puts("first"); else if(cnt1<cnt2) puts("second"); else if(t==1) puts("first"); else puts("second"); } return 0;}
C-Vasya and Basketball
It's also a question .. But I just got down .. Various details are left unattended .. An error occurred 11 times ..... In the middle, I submitted the question D once...
First, store and sort all the numbers that have appeared, and then judge the number of the two persons in two minutes, and find the maximum value.
The Code is as follows:
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL __int64const int INF=0x3f3f3f3f;int a[210000], b[210000], n, m, c[420000], f[420000];int bin_search(int d[], int x, int high){ int low=1, mid, ans=0; while(low<=high) { mid=low+high>>1; if(d[mid]<=x) { ans=mid; low=mid+1; } else high=mid-1; } return ans;}int main(){ int i, j, aa, bb, max1=-2*1e9, x, y, z, cnt=1, p1, p2; scanf("%d",&n); for(i=1; i<=n; i++) { scanf("%d",&a[i]); c[i]=a[i]; } scanf("%d",&m); for(i=1; i<=m; i++) { scanf("%d",&b[i]); c[i+n]=b[i]; } sort(c+1,c+n+m+1); sort(a+1,a+n+1); sort(b+1,b+m+1); c[0]=0; f[0]=0; for(i=1;i<=n+m;i++){ if(c[i]!=c[i-1]){ f[cnt++]=c[i]; } } for(i=0;i<cnt;i++){ x=bin_search(a,f[i],n); y=bin_search(b,f[i],m); p1=x*2+(n-x)*3; p2=y*2+(m-y)*3; if(max1<p1-p2){ max1=p1-p2; aa=p1; bb=p2; } } printf("%d:%d\n",aa,bb); return 0;}
D-Vasya and Chess
I guess the question, so I guess it, and I cannot prove it ..
The Code is as follows:
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL __int64const int INF=0x3f3f3f3f;int main(){ int n; scanf("%d",&n); if(n%2==0) printf("white\n1 2\n"); else printf("black\n"); return 0;}