ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1579. Coat Transportation

Denis Why Access Violation 22? [2] // Problem 1579. Coat Transportation 18 Oct 2007 01:21
#include <fstream>
#include <stdio.h>
#include <vector>
using namespace std;

int n, r, num = 0, g;
int arr[100100] = {0};
vector <int> v[100100];
bool can[100100] = {0};
int pr[100100] = {0};
int pr_val[100100] = {0};
int nm[100100] = {0};

int fset (int x)
{
    int i;
    /*for (i = x; i > 0; --i)
    {
        if (!can[i])
        {
            return i;
        }
    }
    return 0;*/
    if (!can[x])
    {
        return x;
    }
    int t = pr[x];
    pr[x] = fset (t);
    return pr[x];
    ++g;
}

int main ()
{
    //freopen ("a.in", "r", stdin);
    //freopen ("a.out", "w", stdout);
    int i, j = 0, t;
    scanf ("%d%d", &n, &r);
    arr[0] = -110000000;
    for (i = 1; i <= n; ++i)
    {
        scanf ("%d", &arr[i]);
        while (arr[i]-arr[j] > r)
        {
            ++j;
        }
        --j;
        pr[i] = i-1;
        pr_val[i] = j;
    }
    for (i = 1; i <= n; ++i)
    {
        j = pr_val[i];
        g = 0;
        t = fset (j);
        if (t == 0)
        {
            num++;
            v[num].push_back (i);
            nm[i] = num;
        }
        else
        {
            can[t] = true;
            v[nm[t]].push_back (i);
            nm[i] = nm[t];
        }
    }
    printf ("%d\n", num);
    int col = 0;
    for (i = 1; i <= num; ++i)
    {
        printf ("%d ", v[i].size());
        for (j = 0; j < v[i].size()-1; ++j)
        {
            printf ("%d ", v[i][j]);
            ++col;
            if (v[i][j]+r >= v[i][j+1])
            {
                int q = 1;
                q = q/(1-q);
            }
        }
        printf ("%d\n", v[i][v[i].size()-1]);
        ++col;
    }
    if (col != n)
    {
        int q = 1;
        q = q/(1-q);
    }
    return 0;
}

Edited by author 18.10.2007 02:24
Olympic Bear Re: Why Access Violation 22? // Problem 1579. Coat Transportation 28 Oct 2007 00:18
I had WA 22 using 'long' type. When I used 'long long' I got AC.
Smilodon_am Re: Why Access Violation 22? // Problem 1579. Coat Transportation 5 Nov 2008 18:41
Denis, It is siple!!!!!
Change string
arr[0] = -110000000;
on
arr[0] = -1100000000;
and be happy=)