2025: Jumbled Compass
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
int t=m-n;
if(t<0) t+=360;
else t=t%360;
if(t<=360-t) printf("%d\n",t);
else printf("%d\n",t-360);
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <set>
using namespace std;
int main() {
int n;
while(~scanf("%d",&n)) {
set<long long>se1;
se1.insert(0);
long long Map[100002]= {};
Map[0]=100;
while(n--) {
long long temp;
scanf("%lld",&temp);
for(set<long long>::iterator it=se1.begin(); it!=se1.end(); it++) {
long long x=(*it)+Map[(*it)]/temp,y=Map[(*it)]%temp;
if(x>100000) {
y+=(x-100000)*temp;
x=100000;
}
se1.insert(x);
Map[x]=max(Map[x],y);
Map[0]=max(Map[0],Map[(*it)]+(*it)*temp);
}
}
printf("%lld\n",Map[0]);
}
return 0;
}
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<iostream>
using namespace std;
const int inf=0x3f3f3f3f;
char s[105][105];
int t[105][105];
int vis[105][105];
int fx[]={1,-1,0,0,1,1,-1,-1};
int fy[]={0,0,1,-1,1,-1,1,-1};
int px[]={1,-1,0,0};
int py[]={0,0,1,-1};
int n,m,k,sx,sy;
struct node
{
int x,y,step;
}r,p,q;
queue<node> Q;
void bfs_fire()
{
int i,j;
while(!Q.empty())
{
p=Q.front();
Q.pop();
for(i=0;i<8;i++)
{
q=p;
q.x+=fx[i];
q.y+=fy[i];
q.step+=k;
if(q.x<0||q.y<0||q.x>=n||q.y>=m)
continue;
if(vis[q.x][q.y]==0)
{
vis[q.x][q.y]=1;
t[q.x][q.y]=q.step;
Q.push(q);
}
}
}
}
int bfs_people()
{
while(!Q.empty())
Q.pop();
memset(vis,0,sizeof(vis));
int i,j;
p.x=sx;
p.y=sy;
p.step=0;
vis[p.x][p.y]=1;
Q.push(p);
while(!Q.empty())
{
p=Q.front();
Q.pop();
if(s[p.x][p.y]=='t')
return p.step;
for(i=0;i<4;i++)
{
q=p;
q.x+=px[i];
q.y+=py[i];
q.step++;
if(q.x<0||q.y<0||q.x>=n||q.y>=m)
continue;
if(vis[q.x][q.y]==0&&q.step<t[q.x][q.y])
{
vis[q.x][q.y]=1;
Q.push(q);
}
}
}
return -1;
}
int main()
{
int i,j;
while(scanf("%d %d %d",&n,&m,&k)!=EOF)
{
if(n==0&&m==0&&k==0) break;
memset(t,inf,sizeof(t));
memset(vis,0,sizeof(vis));
while(!Q.empty())
Q.pop();
for(i=0;i<n;i++)
{
scanf("%s",s[i]);
for(j=0;j<m;j++)
{
if(s[i][j]=='f')
{
r.x=i;
r.y=j;
r.step=0;
t[i][j]=0;
vis[i][j]=1;
Q.push(r);
}
if(s[i][j]=='s')
{
sx=i;
sy=j;
}
}
}
bfs_fire();
int ans=bfs_people();
if(ans==-1)
printf("Impossible\n");
else
printf("%d\n",ans);
}
}
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<vector>
#include<map>
#include<queue>
#define LL long long
#define N 20010
using namespace std;
struct Linear_Basis
{
LL d[63],p[63],tot;
void init()
{
tot=0;
memset(d,0,sizeof(d));
memset(p,0,sizeof(p));
}
bool ins(LL x)
{
for(int i=62;i>=0;i--)
if (x&(1LL<<i))
{
if (!d[i]) {d[i]=x;break;}
x^=d[i];
}
return x>0;
}
LL Max(LL x)
{
LL res=x;
for(int i=62;i>=0;i--)
res=max(res,res^d[i]);
return res;
}
} LB;
int n,m;
LL w[N];
int main()
{
while(~scanf("%d%d",&n,&m))
{
if (n+m==0) break;
LB.init();
memset(w,0,sizeof(w));
for(int i=1;i<=m;i++)
{
int u,v; LL p;
scanf("%d%d%lld",&u,&v,&p);
w[u]^=p; w[v]^=p;
}
LL P=w[1];
for(int i=2;i<n;i++)
LB.ins(w[i]);
printf("%lld\n",LB.Max(P));
}
}