FR_03_04 - Desant - problem, mapy

Odpowiedz Nowy wątek
2017-10-06 20:04

Rejestracja: 2 lata temu

Ostatnio: 1 rok temu

0

Witam mam problem z zadaniem na polskim SPOJ'u.

zadanie: http://pl.spoj.com/problems/FR_03_04/

Uznałem, że zmapuje współrzędne i porównam ze współrzędnymi spadochroniarzy.

Debugując i sprawdzając dane złapałem jeden błąd.

4
0 1
3 4
1 0
0 5
6
0 1
NIE
3 4
TAK
1 0
TAK
0 5
TAK
5 0
NIE
0 1
NIE

Gdzie dla danych bez początkowych zer jest poprawnie

5
5 7
2 3
3 1
6 7
88 65
7
5 7
TAK
2 3
TAK
3 5
NIE
3 1
TAK
6 7
TAK
88 65
TAK
99 64
NIE

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <vector>
#include <climits>
#include <unordered_map>

using std::endl;
using std::cin;
using std::cout;
using std::string;
using std::vector;
using std::unordered_map;

#define VAR(c, x) __typeof(x) c = x
#define FOREACH(i, c) for(VAR(i, c.begin()); i!=c.end(); i++)

 typedef unordered_map<int, int> mapa;

//bool check(mapa & v, int x, int y){    nie wiem dlaczego, ale po odznaczeniu i użyciu funkcji wyskakuje błąd error: request for member 'first' in '* i.__gnu_cxx::__normal_iterator<_Iterator...
//  FOREACH(i, v)
//      if(i->first == x && i->second == y)
//          return true;
//  return false;
//}

int main(void){

    int t, x, y;
    bool check = 0;
    mapa position;
    cin>>t;
    while(t--){
        cin>>x>>y;
        position[x] = y;
    }
    cin>>t;
    while(t--){
        cin>>x>>y;
        FOREACH(i, position)
            if(i-> first == x && i->second == y)
                check = 1;
        if(check){
            cout<<"TAK\n";  
            check = 0;
        }
        else
            cout<<"NIE\n";
    }
}

Czy mógłby ktoś wytłumaczyć powyższe błedy oraz doradzić, gdzie robię źle!?

edytowany 1x, ostatnio: Blooser, 2017-10-06 20:22

Pozostało 580 znaków

2017-10-06 20:23

Rejestracja: 3 lata temu

Ostatnio: 2 godziny temu

Dżizas, Utwórz sobie hashset z parami integerów (uporządkowanymi - relacje równości tylko im trza napisać) i potem w pętli te zapytania, poza wczytaniem danych: O(1).
Będzie szybciej niż debugować (tak myślę :))


edytowany 1x, ostatnio: lion137, 2017-10-06 20:23

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0