G-Game Rank
计算最终的名次,名次小于等于20时,输了不掉名次,如果还有星就掉星;当位于第一名时且星数为五颗,再赢一局就为“Legend”。连胜的局数大于等于三时赢了加三颗星。
#include <algorithm>
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <cstring>
#define ll long long
using namespace std;
int main()
{
int consec_win = 0,star = 0,_rank = 25;
int size_star[50];
for(int i=21; i<=25; i++)
size_star[i] = 2;
for(int i=16; i<=20; i++)
size_star[i] = 3;
for(int i=11; i<=15; i++)
size_star[i] = 4;
for(int i=1; i<=10; i++)
size_star[i] = 5;
char str[10050];
cin>>str;
int len = strlen(str);
for(int i=0; i<len; i++)
{
if(str[i]=='W')
{
consec_win++;
if(_rank == 1&&star == size_star[_rank])
{
cout<<"Legend"<<endl;
return 0;
}
if(consec_win>=3&&_rank>=6&&_rank<=25)
star+=2;
else
star++;
if(star>size_star[_rank])
{
star -= size_star[_rank];
_rank--;
}
}
else if(str[i] == 'L')
{
consec_win = 0;
if(_rank<20)
{
if(star>=1)
star--;
else
{
_rank++;
star = size_star[_rank]-1;
}
}
else if(_rank == 20)
{
if(star>=1)
star--;
}
}
}
cout<<_rank<<endl;
return 0;
}
J-Jumbled Compass
给出两个角度a,b,求由a到b转过的最小度数。
#include <algorithm>
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <cstring>
#define ll long long
using namespace std;
const int maxn = 1e5+10;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
int a,b;
cin>>a>>b;
if(a>b)
{
int d1 = a-b;
int d2 = 360-a+b;
if(d1<d2)
cout<<'-'<<d1<<endl;
else
{
cout<<d2<<endl;
}
}
else
{
int d1 = b-a;
int d2 = 360-b+a;
if(d1<=d2)
cout<<d1<<endl;
else
cout<<'-'<<d2<<endl;
}
return 0;
}```