SuitNdtie

Jet’s position

May 12th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #include<stdio.h>
  2. typedef long long int ll;
  3.  
  4. ll max(ll a,ll b){
  5.     return (a > b ? a : b);
  6. }
  7.  
  8. int main()
  9. {
  10.     int n;
  11.     scanf("%d",&n);
  12.     ll valR[n+1];
  13.     ll valL[n+1];
  14.     ll sumL = 0;
  15.     ll sumR = 0;
  16.     for(int i = 1 ; i <= n ; i++){
  17.         char di;
  18.         ll val;
  19.         scanf(" %c %lld",&di,&val);
  20.         if(di == 'L'){
  21.             sumL += val;
  22.             valL[i] = -val;
  23.             valR[i] = val;
  24.         }
  25.         else{
  26.             sumR += val;
  27.             valR[i] = -val;
  28.             valL[i] = val;
  29.         }
  30.     }
  31.    
  32.    
  33.     // L
  34.     ll TsumL = 0;
  35.     ll maxL = -1e9;
  36.     ll LL;
  37.     ll LR;
  38.     ll aLL;
  39.     ll aLR;
  40.     for(int i = 1 ; i <= n ; i ++){
  41.         if(TsumL + valL[i] > valL[i]){ // continue;
  42.             TsumL += valL[i];
  43.             LR = i;
  44.         }
  45.         else{//new
  46.             TsumL = valL[i];
  47.             LL = i;
  48.             LR = i;
  49.         }
  50.         if(TsumL > maxL){
  51.             aLL = LL;
  52.             aLR = LR;
  53.             maxL = TsumL;
  54.         }
  55.         else if(TsumL == maxL){
  56.             if(LR - LL + 1 <= aLR - aLL + 1){
  57.                 aLR = LR;
  58.                 aLL = LL;
  59.             }
  60.         }
  61.     }
  62.     //printf("L : %lld (%lld,%lld)\n",maxL,aLL,aLR);
  63.    
  64.     // R
  65.     ll TsumR = 0;
  66.     ll maxR = -1e9;
  67.     ll RL;
  68.     ll RR;
  69.     ll aRL;
  70.     ll aRR;
  71.     for(int i = 1 ; i <= n ; i ++){
  72.         if(TsumR + valR[i] > valR[i]){ // continue;
  73.             TsumR += valR[i];
  74.             RR = i;
  75.         }
  76.         else{ //new
  77.             TsumR = valR[i];
  78.             RL = i;
  79.             RR = i;
  80.         }
  81.         if(TsumR > maxR){
  82.             aRL = RL;
  83.             aRR = RR;
  84.             maxR = TsumR;
  85.         }
  86.         else if(TsumR == maxR){
  87.             if(RR - RL + 1 <= aRR - aRL + 1){
  88.                 aRL = aRL;
  89.                 aRR = aRR;
  90.             }
  91.         }
  92.     }
  93.     //printf("R : %lld (%lld,%lld)\n",maxR,aRL,aRR);
  94.     sumL += maxL;
  95.     sumR += maxR;
  96.    
  97.     if(sumR >= sumL){
  98.         printf("R %lld %d %d",sumR,aRL,aRR);
  99.     }else{
  100.         printf("L %lld %d %d",sumL,aLL,aLR);   
  101.     }
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment