Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

[ Runtime Error ] 讨论区给的数据都通过了为啥还这样?大牛帮忙测测吧~

Posted by 15pengyi at 2010-05-23 23:24:15 on Problem 1009
#include <stdio.h>
#include <stdlib.h>

#define MAX 1024

int absi(int x, int y)
{
    return x > y ? x - y : y - x;
}

int main()
{
    int input[MAX] = {0};
    int output[MAX] = {0};
    int line;
    scanf("%d", &line);
    printf("%d\n", line);
    while (line > 0)
    {
        for (int i = 0; i < line; i++)
        {
            input[i] = output[i] = -1;
        }
        
        int value, length;
        int col = 0, count = 0;
        int previ = -1, prevo = -1, prevn = 1;
        int pprevi = -1, pprevo = -1, pprevn = 1;
        scanf("%d %d", &value, &length);
        while (value + length > 0)
        {
            count = 0;
            while (length > 0 && count < 2 * line + 2)
            {
                int tempo = -1, temp = -1;
                if (input[col] == -1)
                {
                    input[col] = value;
                    if (col > 0)
                    {
                        temp = absi(value, input[col - 1]);
                        output[col] = temp > output[col] ? temp : output[col];
                        output[col - 1] = temp > output[col - 1] ? temp : output[col - 1];
                    }
                }
                else
                {
                    temp = absi(value, input[col]);
                    tempo = temp > tempo ? temp : tempo;
                    output[col] = temp > output[col] ? temp : output[col];
                    
                    if (col > 0)
                    {
                        temp = absi(value, input[col - 1]);
                        tempo = temp > tempo ? temp : tempo;
                        output[col - 1] = temp > output[col - 1] ? temp : output[col - 1];
                    }
                    
                    if (col < line - 1)
                    {
                        temp = absi(value, input[col + 1]);
                        tempo = temp > tempo ? temp : tempo;
                        output[col + 1] = temp > output[col + 1] ? temp : output[col + 1];
                    }
                    
                    if (previ != -1 && col > 0)
                    {
                        temp = absi(value, previ);
                        tempo = temp > tempo ? temp : tempo;
                        prevo = temp > prevo ? temp : prevo;
                    }
                    
                    if (pprevo != -1)
                    {
                        if (prevo == pprevo)
                        {
                            prevn = pprevn + 1;
                        }
                        else
                        {
                            prevn = 1;
                            printf("%d %d\n", pprevo, pprevn);
                        }
                    }
                    pprevo = prevo;
                    pprevn = prevn;

                    previ = input[col];
                    prevo = output[col];
                    
                    input[col] = value;
                    output[col] = tempo;
                }
                
                col = (col + 1) % line;
                length--;
                count++;
            }
            
            if (length > 0)
            {
                if (prevo == pprevo)
                {
                    prevn = pprevn + length;
                }
                else
                {
                    prevn = length;
                    printf("%d %d\n", pprevo, pprevn);
                }
                pprevo = prevo;
                pprevn = prevn;
                
                col = (col + length) % line;
            }
            
            scanf("%d %d", &value, &length);
        }
        
        for (col = 0; col <= line; col++)
        {
            if (pprevo != -1)
            {
                if (prevo == pprevo)
                {
                    prevn = pprevn + 1;
                }
                else
                {
                    printf("%d %d\n", pprevo, pprevn);
                    prevn = 1;
                }
            }
            pprevo = prevo;
            pprevn = prevn;
            
            if (col < line)
            {
                previ = input[col];
                prevo = output[col];
            }
        }
        
        pprevo = pprevo == -1 ? 0 : pprevo;
        printf("%d %d\n", pprevo, pprevn);
        printf("0 0\n");
        
        scanf("%d", &line);
        printf("%d\n", line);
    }
    
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator