bala.cpp

来自「给定n个整数a , a , ,an 1 2 &#61516 组成的序列。序列中元」· C++ 代码 · 共 69 行

CPP
69
字号
#include <iostream>
#include <fstream>

using namespace std;

#define sign(x) ((x)==0?0:((x)>0?1:-1))

int calc (int data[], int cnt)
{
    if (cnt<=0)
        return 0;

    int * value=new int[cnt+1];
    int * first=new int[cnt+1];
    int * last=new int[cnt+1];
    int i;
    
    for (i=0;i<cnt+1;i++)
        first[i]=-1;
    
    value[0]=0;
    for (i=1;i<cnt+1;i++)
        value[i]=value[i-1]+sign(data[i-1]);
    
    for (i=0;i<cnt+1;i++)
    {
        int v=value[i];
        if (first[v]==-1)
            first[v]=last[v]=i;
        else
            last[v]=i;
    }
       
    int max=0;
    for (i=0; i<cnt+1; i++)
        if (first[i] != -1 && max < last[i] - first[i])
            max = last[i] - first[i];
    
    delete value;
    delete first;
    delete last;
    
    return max;
}


int main()
{
	ifstream in("input.txt");
	int n;
	in>>n;
	
    int *t;
	t=new int[n];

	for (int j=0;j<n;j++)
	  in>>t[j];
    
   	int max1=calc(t,sizeof(t)/sizeof(t[0]));

    ofstream out("output.txt");
	out<<max1<<endl;
	
	in.close();
	out.close();
   
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?