Cod sursa(job #2346037)

Utilizator BogdanAlexandruBogdan-Alexandru Dig BogdanAlexandru Data 16 februarie 2019 23:22:09
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <stdio.h>
#include <climits>
using namespace std;
FILE *f,*g;
int WhiteOrBlack(int a,int A)
{
    if(!A)return -a;
    return a;
}
int st1,st2;
void ConditionOne(int X,int &SumOne,int i)
{
    if(SumOne<0){
        st1=i,SumOne=X;return;
    }
    SumOne+=X;
}
void ConditionTwo(int X,int &SumTwo,int i)
{
    if(SumTwo<0){
        st2=i,SumTwo=X;return;
    }
    SumTwo+=X;
}
void SolveProblemNigga()
{
    int SumOne=-1,SumTwo=-1,Stot=0,BestSumOne=-INT_MAX,X,Y,drmax;
    int drmin,N,i,BestSumTwo=-INT_MAX;
    int stmax,stmin;
    fscanf(f,"%d",&N);
    for(i=1;i<=N;i++)
    {
        fscanf(f,"%d %d",&X,&Y);
        X=WhiteOrBlack(X,Y);Stot+=X;
        ConditionOne(X,SumOne,i);
        ConditionTwo(-X,SumTwo,i);
        if(BestSumOne<SumOne)BestSumOne=SumOne,drmax=i,stmax=st1;
        if(BestSumTwo<SumTwo)BestSumTwo=SumTwo,drmin=i,stmin=st2;
    }
    if(Stot-(-1)*(BestSumTwo)>BestSumOne)
        BestSumOne=Stot-(-1)*(BestSumTwo),stmax=drmin+1,drmax=N+stmin-1;
    fprintf(g,"%d ",BestSumOne);
    fprintf(g,"%d %d",stmax,drmax-stmax+1);

}
int main()
{
    f=fopen("buline.in","r");g=fopen("buline.out","w");
    SolveProblemNigga();
    fclose(f);
    fclose(g);
    return 0;
}