Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- typedef long long int ll;
- ll max(ll a,ll b){
- return (a > b ? a : b);
- }
- int main()
- {
- int n;
- scanf("%d",&n);
- ll valR[n+1];
- ll valL[n+1];
- ll sumL = 0;
- ll sumR = 0;
- for(int i = 1 ; i <= n ; i++){
- char di;
- ll val;
- scanf(" %c %lld",&di,&val);
- if(di == 'L'){
- sumL += val;
- valL[i] = -val;
- valR[i] = val;
- }
- else{
- sumR += val;
- valR[i] = -val;
- valL[i] = val;
- }
- }
- // L
- ll TsumL = 0;
- ll maxL = -1e9;
- ll LL;
- ll LR;
- ll aLL;
- ll aLR;
- for(int i = 1 ; i <= n ; i ++){
- if(TsumL + valL[i] > valL[i]){ // continue;
- TsumL += valL[i];
- LR = i;
- }
- else{//new
- TsumL = valL[i];
- LL = i;
- LR = i;
- }
- if(TsumL > maxL){
- aLL = LL;
- aLR = LR;
- maxL = TsumL;
- }
- else if(TsumL == maxL){
- if(LR - LL + 1 <= aLR - aLL + 1){
- aLR = LR;
- aLL = LL;
- }
- }
- }
- //printf("L : %lld (%lld,%lld)\n",maxL,aLL,aLR);
- // R
- ll TsumR = 0;
- ll maxR = -1e9;
- ll RL;
- ll RR;
- ll aRL;
- ll aRR;
- for(int i = 1 ; i <= n ; i ++){
- if(TsumR + valR[i] > valR[i]){ // continue;
- TsumR += valR[i];
- RR = i;
- }
- else{ //new
- TsumR = valR[i];
- RL = i;
- RR = i;
- }
- if(TsumR > maxR){
- aRL = RL;
- aRR = RR;
- maxR = TsumR;
- }
- else if(TsumR == maxR){
- if(RR - RL + 1 <= aRR - aRL + 1){
- aRL = aRL;
- aRR = aRR;
- }
- }
- }
- //printf("R : %lld (%lld,%lld)\n",maxR,aRL,aRR);
- sumL += maxL;
- sumR += maxR;
- if(sumR >= sumL){
- printf("R %lld %d %d",sumR,aRL,aRR);
- }else{
- printf("L %lld %d %d",sumL,aLL,aLR);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment