답안 #758918

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
758918 2023-06-15T14:03:20 Z akarinkof Garage (IOI09_garage) C++14
100 / 100
2 ms 340 KB
#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef pair<ll, ll> P1;
typedef pair<pair<ll,ll>,ll> P3;
typedef pair<string,ll> Ps;
typedef pair<pair<ll,ll>,pair<ll,ll> > P4;


#define rep(i,n) for(ll i=0;i<n;++i)
#define rrep(i,n) for(ll i=n-1;i>=0;--i)
#define FOR(i,s,e) for(ll i=s;i<=e;++i)
#define FFOR(i,s,e) for(ll i=s;i>=e;--i)

#define yesno(flg) if(flg){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}
#define ALL(a) (a).begin(),(a).end()
#define mp make_pair
#define pb push_back
#define vl vector<ll>
#define vs vector<string>
#define so(a) sort(a.begin(),a.end())

#define fi first
#define se second
#define print(a) cout<<a<<endl
#define ssize(a) (ll)(a.size())

#define MAX_N 1002
#define i197 1000000007
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }


const ll INF=1000000000000000001;
struct edge
{
	int to, cost;
};

struct pos{
	// 1 変数を入れる;
	ll t;
	ll x,y;
	set<ll> st;

};
int dx[4] = { 1, 0, -1, 0};
int dy[4] = { 0, 1, 0, -1};
int dd[5] = { 0, 1, 0, -1, 0};





int main(){

	ll n,m;
	cin>>n>>m;

	vl r(n);
	rep(i,n)cin>>r[i];

	vl w(m+1);
	rep(i,m)cin>>w[i+1];

	priority_queue<ll,vector<ll>,greater<ll> > que;
	deque<ll> q;
	rep(i,n)que.push(i);

	vl v(m+1);
	ll ans=0;
	rep(i,2*m){
		ll c;
		cin>>c;

		if(c>0){
			if(que.empty())q.push_back(c);
			else{
				ans+=r[que.top()]*w[c];
				v[c]=que.top();
				que.pop();
			}
		}else{
			que.push(v[abs(c)]);
			if(!q.empty()){
				ans+=r[que.top()]*w[q.front()];
				v[q.front()]=que.top();
				que.pop();
				q.pop_front();
			}

		}

	}
	print(ans);

	return 0;

}














# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 2 ms 212 KB Output is correct
17 Correct 1 ms 212 KB Output is correct
18 Correct 2 ms 212 KB Output is correct
19 Correct 2 ms 340 KB Output is correct
20 Correct 2 ms 212 KB Output is correct