A - Block Game
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void bo1(ll a, ll b, ll sum)
{
if((a % b == 0) || (a/b >= 2))
{
cout << "win" <<endl;
return;
}
else
while(b!=1)
{
ll t=b;
b=a-b;
a=t;
sum++;
if(a/b >= 2)
{
cout << (sum%2==1?"lose":"win")<<endl;
return;
}
if(b == 1)
{
cout<<(sum%2==1?"lose":"win")<<endl;
return;
}
}
}
int main()
{
ll a, b;
cin>>a>>b;
if(b>a)
swap(a,b);
bo1(a, b, 0);
return 0;
}
C - Completing the Square
#include <bits/stdc++.h>
#include<map>
using namespace std;
int main()
{
int a1,b1,a2,b2,a3,b3,x,y,x1,y1,x2,y2;
cin>>a1>>b1>>a2>>b2>>a3>>b3;
int len1=(a2-a1)*(a2-a1)+(b2-b1)*(b2-b1);
int len2=(a3-a1)*(a3-a1)+(b3-b1)*(b3-b1);
int len3=(a3-a2)*(a3-a2)+(b3-b2)*(b3-b2);
if(len1==len2)
{
x=a1;
y=b1;
x1=a2;
y1=b2;
x2=a3;
y2=b3;
}
else if(len1==len3)
{
x=a2;
y=b2;
x1=a1;
y1=b1;
x2=a3;
y2=b3;
}
else if(len2==len3)
{
x=a3;
y=b3;
x1=a2;
y1=b2;
x2=a1;
y2=b1;
}
cout<<x1+x2-x<<" "<<y1+y2-y;
return 0;
}
I - Rock Band
#include<bits/stdc++.h>
using namespace std;
vector<int>G[1000011];
int arr[1000011];
int main()
{
int m,s;
cin>>m>>s;
for(int i=1;i<=m;i++)
{
int sum = 0;
for(int j=1;j<=s;j++)
{
int u;
cin>>u;
sum += (int)u;
G[i].push_back(sum);
}
}
int id = s;
for(int i=0;i<s;i++)
{
bool judge = true;
int now = G[1][i];
for(int j=2;j<=m;j++)
{
if(now != G[j][i]){judge = false;break; }
}
if(judge == true){
id = i + 1;
break;
}
}
cout<<id<<endl;
int head = 0;
for(int i=0;i<id;i++)
{
arr[i] = G[1][i] - head;
head = G[1][i];
}
sort(arr,arr+id);
for(int i=0;i<id;i++)
{cout<<arr[i]<<' ';}
return 0;
}
G - Millionaire Madness
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define PI 3.1415926535
using namespace std;
typedef long long ll;
const int maxn=1e7+1;
void acc_ios()
{
ios::sync_with_stdio(false);
cin.tie(0);
}
struct node
{
int x,y;
ll val;
bool operator<(const node &a)const
{
return a.val<val;
}
};
int nextx[5]={0,0,1,-1};
int nexty[5]={1,-1,0,0};
int a[1010][1010];
int vis[1010][1010];
int n,m;
ll ans;
void bfs()
{
memset(vis,0,sizeof(vis));
priority_queue<node>Q;
Q.push((node){0,0,0});
while(!Q.empty())
{
node k=Q.top();
Q.pop();
if(vis[k.x][k.y]) continue;
ans=max(ans,k.val);
vis[k.x][k.y]=1;
if(k.x==n-1&&k.y==m-1)
{
return ;
}
for(int i=0;i<4;i++)
{
int nx=k.x+nextx[i];
int ny=k.y+nexty[i];
if(nx<0||nx>=n||ny<0||ny>=m) continue;
if(vis[nx][ny])
{
continue;
}
Q.push((node){nx,ny,max(0,a[nx][ny]-a[k.x][k.y])});
}
}
}
int main()
{
acc_ios();
ans=0;
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[i][j];
}
}
bfs();
cout<<ans<<endl;
return 0;
}