#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
int w[555];
int ord[1111];
vector<int> sta;
int main()
{
int n, m;
while(scanf("%d %d",&n, &m) != EOF)
{
sta.clear();
for( int i = 1; i <= n; i++)
scanf("%d",&w[i]);
long long ans = 0;
scanf("%d",&ord[0]);
sta.push_back(ord[0]);
for( int i = 1; i < m; i++)
{
scanf("%d",&ord[i]);
//在最上方
if(ord[i] == sta[sta.size()-1])
continue;
//不在最上方
else
{
vector<int> :: iterator it;
for( it = sta.end()-1; it >= sta.begin(); it--)
{
if(*it == ord[i])
{
sta.erase(it);
break;
}
ans += w[*it];
}
sta.push_back(ord[i]);
}
}
printf("%lld\n",ans);
}
}
New Year Book Reading
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
int w[555];
int ord[1111];
vector<int> sta;
int main()
{
int n, m;
while(scanf("%d %d",&n, &m) != EOF)
{
sta.clear();
for( int i = 1; i <= n; i++)
scanf("%d",&w[i]);
long long ans = 0;
scanf("%d",&ord[0]);
sta.push_back(ord[0]);
for( int i = 1; i < m; i++)
{
scanf("%d",&ord[i]);
//在最上方
if(ord[i] == sta[sta.size()-1])
continue;
//不在最上方
else
{
vector<int> :: iterator it;
for( it = sta.end()-1; it >= sta.begin(); it--)
{
if(*it == ord[i])
{
sta.erase(it);
break;
}
ans += w[*it];
}
sta.push_back(ord[i]);
}
}
printf("%lld\n",ans);
}
}
New Year Book Reading