Matbeställning | 프로그래밍의 벗 PivotOJ
PivotOJ

Matbeställning

시간 제한: 2000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2019 — onlinekvalBOJ 20844

문제

Anthony och hans nn vänner är på restaurang och ska beställa mat. Menyn har mm rätter, och alla vännerna har från början valt rätter som de vill ha. Anthony blir dock gladare ju fler olika rätter sällskapet beställer, så att han får se mer av vad restaurangen har att erbjuda. Han kan till och med tänka sig att betala för vännernas mat för att höja antalet olika beställda rätter.

Idag vill Anthony att vännerna ska beställa minst kk olika rätter. Han kan få en vän att byta beställning till en dyrare rätt genom att betala mellanskillnaden mellan kostnaden för vännens ursprungliga val och den dyrare rätten (men varje person beställer fortfarande bara en sak). Han kan göra så många sådana byten som han vill.

Givet antalet rätter, deras kostnader, och vännernas ursprungliga beställningar, vad är det minsta Anthony behöver betala för att kunna se till att vännerna beställer minst kk olika rätter?

입력

Den första raden innehåller tre heltal nn, mm och kk, antalet vänner, antalet rätter och det önskade antalet unika beställningar (1n,m21051 \leq n, m \leq 2 \cdot 10^5, 1kn1 \le k \le n). \\ Därefter kommer en rad med nn heltal x1xnx_1 \dots x_n, där xix_i (1xim1 \leq x_i \leq m) är den rätt som vän ii från början vill köpa. \\ Därefter kommer en rad med mm heltal c1cmc_1 \dots c_m, där cic_i (1ci1091 \leq c_i \leq 10^9) är kostnaden för rätt ii.

출력

Ett heltal, det minsta beloppet som Anthony behöver betala för att vännerna ska beställa minst kk olika rätter. Om det är omöjligt, skriv ut 1-1. Notera att svaret inte nödvändigtvis får plats i ett 3232-bitars heltal.

힌트

I det första exempelfallet kan Anthony betala 22 kronor för att vän 11 ska byta från den första till den tredje rätten. Efter det beställs 33 unika rätter: rätt 11, rätt 22 och rätt 33.

I det andra exempelfallet finns det två rätter som båda kostar 1010 kronor, och båda vännerna har valt den första rätten. Då det inte finns någon dyrare rätt än den första kan inte Anthony göra något för att ändra vännernas val, och kan aldrig uppnå 22 unika rätter. Svaret blir då 1-1.

I det tredje exempelfallet vill vännerna redan ha två olika rätter, så Anthony behöver inte betala någonting.

I det sista exempelfallet vill Anthony se till att alla 88 vänner beställer olika rätter. Det billigaste alternativet här är att betala för att vän 33, 44, 77 och 88 ska uppgradera till en av 10000000001\,000\,000\,000-kronorsrätterna. Totalt kostar det 39999999903\,999\,999\,990 kronor.

예제

예제 1

입력
3 4 3
1 1 2
1 2 3 4
출력
2

예제 2

입력
2 2 2
1 1
10 10
출력
-1

예제 3

입력
2 2 1
1 2
10 10
출력
0

예제 4

입력
8 8 8
1 2 3 4 1 2 3 4
1 2 3 4 1000000000 1000000000 1000000000 1000000000
출력
3999999990
코드를 제출하려면 로그인하세요.