Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8. Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<algorithm>
#include<math.h>
#include"message.h"
#include"kollib.h"                  //dane startowe

int kolejny(int x){ return SecondNeighbor(x); } //lewy s�siad x'a

using namespace std;

int main()
{
    int moj_numer = MyNodeId() + 1; //numer komputera, kt�rym jest jam
    int liczba_komp = NumberOfNodes(); //liczba komp�ter�w
    vector<int>Ti;
    vector<int>Tp;
    int liczba_uczniow = NumberOfStudents(); //liczba uczniow
    int liczba_w_komp = (liczba_uczniow+1) / liczba_komp;
    Ti.resize(liczba_w_komp+1);
    Tp.resize(liczba_w_komp+1);
    int liczba_w_ostatnim = liczba_uczniow % liczba_komp;
    if(liczba_w_ostatnim == 0) liczba_w_ostatnim = liczba_w_komp;
    int ilosc_pytan = NumberOfQueries();
    
    int x=1;
    int a=0;
    
    x=FirstNeighbor(1);
    /*
    if(moj_numer == 1) x=RightNeighbour(1);
    else{
        Receive(moj_numer-1); 
        x = GetInt(moj_numer-1);
    }
    if(moj_numer == liczba_komp)
        liczba_w_ja = liczba_w_ostatnim;
    else
        liczba_w_ja = liczba_w_komp;
    */
    for(int i=1; i<liczba_komp; i++)
        for(int p=1; p<=liczba_w_komp; p++){
            x=kolejny(x);
            int szukany_komp = (x+1) / liczba_w_komp;
            int miejsce = x % liczba_w_komp;
            if(miejsce == 0) miejsce = liczba_w_komp;
            if(moj_numer == szukany_komp){
                Ti[miejsce] = i;
                Tp[miejsce] = p;
            }
        }
    
    for(int p=1; p<=liczba_w_ostatnim; p++){
        x=kolejny(x);
        int szukany_komp = (x+1) / liczba_w_komp;
        int miejsce = x % liczba_w_komp;
        if(miejsce == 0) miejsce = liczba_w_komp;
        if(moj_numer == szukany_komp){
            Ti[miejsce] = liczba_komp;
            Tp[miejsce] = p;
        }
    }
    
    for(int pytanie = 0; pytanie<ilosc_pytan; pytanie++){
        
        int Tijy, Tijz, Tpjy, Tpjz;
        
        int y = QueryFrom(pytanie);
        int z = QueryTo(pytanie);
        int iy = (y+1) / liczba_w_komp;
        int iz = (z+1) / liczba_w_komp;
        int jy = y % liczba_w_komp;
        if(jy == 0) jy = liczba_w_komp;
        int jz = z % liczba_w_komp;
        if(jz == 0) jz = liczba_w_komp;
        
        if(moj_numer == 1){
            if(moj_numer == iy){
                Tijy = Ti[jy];
                Tpjy = Tp[jy];
            }
            else{
                int z_ktorego_y = Receive(-1);
                Tijy = GetInt(z_ktorego_y); //otrzymaj
                Tpjy = GetInt(z_ktorego_y); //otrzymaj
            }
            
            if(moj_numer == iz){
                Tijz = Ti[jz];
                Tpjz = Tp[jz];
            }
            else{
                int z_ktorego_z = Receive(-1);
                Tijz = GetInt(z_ktorego_z); //otrzymaj
                Tpjz = GetInt(z_ktorego_z); //otrzymaj
            }
            printf("%d", min( (abs(Tijy-Tijz)-1)*liczba_w_komp + (abs(Tpjz-Tpjy)+liczba_w_komp-1) , (liczba_komp+abs(Tijy-Tijz)-2)*liczba_w_komp + liczba_w_ostatnim + (liczba_w_komp+abs(Tpjy-Tpjz)-1) ) );
        }
        else{
            if(moj_numer == iy){
                Tijy = Ti[jy];
                PutInt(0, Tijy); //wyslij do 1
                Tpjy = Tp[jy];
                PutInt(0, Tpjy); //wyslij do 1
                Send(0);
            }
            
            if(moj_numer == iz){
                Tijz = Ti[jz];
                PutInt(0, Tijz); //wyslij do 1
                Tpjz = Tp[jz];
                PutInt(0, Tpjz); //wyslij do 1
                Send(0);
            }
        }
    }
    
    system("pause");
    return 0;
}