时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
            空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
             64bit IO Format: %lld
        
     
    题目描述
        
        
    
            
            你有一条长度为n的一维直线,我们可以用区间[1,n]来表示。直线一开始是白色的,你想给这条直线染色,
 染色是有要求的,你有m个限制,第i个限制有两个数

,表示直线上

 这个区间必须是黑色的;
 剩下的没有被限制包含的区间必须是白色的;
 直线上有K个点,你每次可以选择两个点(设它们位于位置x和位置y),将这两点之间的区间的颜色改变,也就是黑色变白色,白色变黑色,代价是这个区间的大小,即|x-y|;
 你想知道在满足限制的条件下,最小的染色代价是多少。
输入描述:
                                                    第一行,三个正整数) ,分别表示直线长度、限制个数和点的个数。
 ,分别表示直线长度、限制个数和点的个数。
接下来m行,每行两个正整数,表示) 。
。
最后一行,K个正整数,第i个表示第i个点的位置) 。
。
保证m个限制区间两两互不相交,且一定存在至少一种合法的染色方案满足限制
                                                                            输出描述:
                                                    总共一行,一个整数,表示满足限制的条件下,最小的染色代价是多少。
                                                                            
                        
                            示例1
                        
                        
                            
                                输入
                                复制
                                
                                
                                    10 3 9
2 4
6 8
9 10
1 2 3 4 6 7 8 9 10