A. Where do I Turn?
#include <iostream>
using namespace std;
struct point
{
long long x,y;
}p[3];
long long chaji(point a,point b,point c)
{
return (c.x-a.x)*(b.y-a.y)-(b.x-a.x)*(c.y-a.y);
}
int main()
{
int i;
for(i=0;i<3;i++) cin>>p[i].x>>p[i].y;
if((p[2].y-p[1].y)*(p[1].x-p[0].x)==(p[1].y-p[0].y)*(p[2].x-p[1].x))
cout<<"TOWARDS"<<endl;
else if(chaji(p[2],p[1],p[0])>0)
cout<<"LEFT"<<endl;
else
cout<<"RIGHT"<<endl;
return 0;
}
B.
Effective Approach
#include <iostream>
using namespace std;
int main()
{
long long n,m,x,i,ans1,ans2;
int data[100005],inp[100005];
cin>>n;
for(i=1;i<=n;i++)
{
cin>>data[i];inp[data[i]]=i;
}
cin>>m;
for(i=1;i<=m;i++)
{
cin>>x;
ans1+=inp[x];
ans2+=(n-inp[x]+1);
}
cout<<ans1<<" "<<ans2<<endl;
return 0;
}