Cod sursa(job #1438139)

Utilizator karlaKarla Maria karla Data 19 mai 2015 02:39:27
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

FILE*f=fopen("robot3.in","r"),*g=fopen("robot3.out","w");

int n, m, x, y;

struct pasi
{
    int a, b, val, c;
}v[5005];


bool cmp(pasi z, pasi t)
{
    if (z.a == t.a)
        return z.b < t.b;
    else
        return z.a < t.a;
}

bool cmp1(pasi z, pasi t)
{
    return z.c < t.c;
}

int main()
{
    fscanf(f,"%d %d %d %d\n",&n,&m,&x,&y);
    v[0].a = x;
    v[0].b = y;
    char ch;
    for(int i = 1; i <= m; i++)
    {
        fscanf(f,"%c ",&ch);
        v[i].c = i;
        if(ch == 'N')
        {
            v[i].a = v[i-1].a - 1;
            v[i].b = v[i-1].b ;
        }
        if(ch == 'S')
        {
            v[i].a = v[i-1].a + 1;
            v[i].b = v[i-1].b;
        }
        if(ch == 'E')
        {
            v[i].b = v[i-1].b + 1;
            v[i].a = v[i-1].a;
        }
        if(ch == 'V')
        {
            v[i].b = v[i-1].b - 1;
            v[i].a = v[i-1].a;
        }
    }
    sort(v,v+m+1,cmp);
    int nr = 0, k;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
        {
            fscanf(f,"%d ",&k);
            if(v[nr].a == i && v[nr].b == j)
            {
                v[nr].val = k;
                nr++;
            }
            if (nr == m) break;
        }
        if(nr == m) break;
    }
    long long s = 0;
    int ok = 0;
    sort(v,v+m+1,cmp1);
    s = v[0].val;
    for(int i = 1; i <= m; i++)
    {
        s += v[i].val;
        s--;
        if(s == 0){ fprintf(g,"%d %d\n",v[i].a,v[i].b); ok = 1; break;}
    }
    if(ok == 0) fprintf(g,"%d %d\n",v[m].a, v[m].b);
    return 0;
}