Guest User

Untitled

a guest
Nov 15th, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <string>
  2. #include <queue>
  3. #include <iostream>
  4. #include <stdio.h>
  5. #include <algorithm>
  6. #include <vector>
  7. using namespace std;
  8.  
  9. const long long inf=1000000000000000000ll;
  10. long long dp[10010][2];
  11. long long d[10010][2];
  12. struct tt{
  13.     long long t;
  14.     long long x;
  15. };
  16.  
  17. tt arr[10010];
  18. int n;
  19. int main(){
  20.     while(scanf("%d",&n)!=EOF){
  21.    
  22.         for(int i=1;i<=n;i++){
  23.             scanf("%lld %lld",&arr[i].x,&arr[i].t);
  24.         }
  25.         for(int i=1;i<=n;i++){
  26.             dp[i][0]=0;
  27.             dp[i][1]=0;
  28.         }
  29.         for(int j=2;j<=n;j++){
  30.             for(int i=1;i<=n-j+1;i++){
  31.                 int l=i,r=i+j-1;
  32.                 d[i][0]=inf;
  33.                 if(dp[i+1][0]<inf){
  34.                     d[i][0]=min(d[i][0],dp[i+1][0] + arr[i+1].x-arr[i].x);
  35.                 }
  36.                 if(dp[i+1][1]<inf){
  37.                     d[i][0]=min(d[i][0],dp[i+1][1] + arr[r].x-arr[i].x);
  38.                 }
  39.                 d[i][1]=inf;
  40.                 if(dp[i][0]<inf){
  41.                     d[i][1]=min(d[i][1],dp[i][0] + arr[r].x-arr[i].x);
  42.                 }
  43.                 if(dp[i][1]<inf){
  44.                     d[i][1]=min(d[i][1],dp[i][1] + arr[r].x-arr[r-1].x);
  45.                 }
  46.                 if(d[i][0]>=arr[i].t){
  47.                     d[i][0]=inf;
  48.                 }
  49.                 if(d[i][1]>=arr[r].t){
  50.                     d[i][1]=inf;
  51.                 }
  52.             }
  53.             for(int i=1;i<=n-j+1;i++){
  54.                 dp[i][0]=d[i][0];
  55.                 dp[i][1]=d[i][1];
  56.             }
  57.         }
  58.         if(dp[1][0]>=inf  && dp[1][1]>=inf ){
  59.             printf("No solution\n");
  60.         } else {
  61.             printf("%lld\n",min(dp[1][0],dp[1][1]));
  62.         }
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment