#include "Azer.h"
#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int cura,nodea,statea;
vector<int> dista,da;
vector<pair<int,int> > va[2005];
set<pair<int,int> > sa;
void upda(int node)
{
sa.erase({dista[node],node});
dista[node]=cura;
for (auto p:va[node])
{
if (cura+p.second<dista[p.first])
{
sa.erase({dista[p.first],p.first});
dista[p.first]=cura+p.second;
sa.insert({dista[p.first],p.first});
}
}
if (sa.empty())
return;
nodea=sa.begin()->second;
int rnd=uniform_int_distribution<int>(0,1)(rng);
SendA(rnd);
if (rnd)
{
statea=2;
for (int i=0;i<11;i++)
SendA(nodea&(1<<i));
for (int i=0;i<9;i++)
SendA(min(dista[nodea]-cura,511)&(1<<i));
}
else
statea=1;
}
void InitA(int n,int a,vector<int> u,vector<int> v,vector<int> c)
{
for (int i=0;i<a;i++)
{
va[u[i]].push_back({v[i],c[i]});
va[v[i]].push_back({u[i],c[i]});
}
for (int i=0;i<n;i++)
{
dista.push_back(1e9);
sa.insert({dista[i],i});
}
upda(0);
}
void ReceiveA(bool x)
{
if (statea==2)
{
if (x)
{
cura=dista[nodea];
upda(nodea);
}
else
{
statea=1;
SendA(0);
}
return;
}
da.push_back(x);
if (da.size()==20)
{
int node=0,add=0;
for (int i=0;i<11;i++)
node|=(da[i]<<i);
for (int i=0;i<9;i++)
add|=(da[i+11]<<i);
da.clear();
if (dista[nodea]<cura+add)
{
SendA(0);
SendA(1);
statea=2;
for (int i=0;i<11;i++)
SendA(nodea&(1<<i));
for (int i=0;i<9;i++)
SendA(min(dista[nodea]-cura,511)&(1<<i));
}
else
{
cura+=add;
SendA(1);
upda(node);
}
}
}
vector<int> Answer()
{
return dista;
}
#include "Baijan.h"
#include <bits/stdc++.h>
using namespace std;
int curb,nodeb,stateb;
vector<int> distb,db;
vector<pair<int,int> > vb[2005];
set<pair<int,int> > sb;
void updb(int node)
{
sb.erase({distb[node],node});
distb[node]=curb;
for (auto p:vb[node])
{
if (curb+p.second<distb[p.first])
{
sb.erase({distb[p.first],p.first});
distb[p.first]=curb+p.second;
sb.insert({distb[p.first],p.first});
}
}
if (sb.empty())
return;
nodeb=sb.begin()->second;
}
void InitB(int n,int b,vector<int> u,vector<int> v,vector<int> c)
{
for (int i=0;i<b;i++)
{
vb[u[i]].push_back({v[i],c[i]});
vb[v[i]].push_back({u[i],c[i]});
}
for (int i=0;i<n;i++)
{
distb.push_back(1e9);
sb.insert({distb[i],i});
}
updb(0);
}
void ReceiveB(bool x)
{
if (!stateb)
{
if (!x)
{
stateb=2;
for (int i=0;i<11;i++)
SendB(nodeb&(1<<i));
for (int i=0;i<9;i++)
SendB(min(distb[nodeb]-curb,511)&(1<<i));
}
else
stateb=1;
return;
}
if (stateb==2)
{
stateb=0;
if (x)
{
curb=distb[nodeb];
updb(nodeb);
}
return;
}
db.push_back(x);
if (db.size()==20)
{
int node=0,add=0;
for (int i=0;i<11;i++)
node|=(db[i]<<i);
for (int i=0;i<9;i++)
add|=(db[i+11]<<i);
db.clear();
stateb=0;
if (distb[nodeb]<=curb+add)
SendB(0);
else
{
curb+=add;
SendB(1);
updb(node);
}
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
544 ms |
952 KB |
Wrong Answer [2] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
1088 KB |
Output is correct |
2 |
Incorrect |
632 ms |
1164 KB |
Wrong Answer [2] |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
566 ms |
1136 KB |
Wrong Answer [2] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
314 ms |
1768 KB |
Output is correct |
2 |
Correct |
452 ms |
1760 KB |
Output is correct |
3 |
Correct |
684 ms |
23784 KB |
Output is correct |
4 |
Correct |
1040 ms |
1760 KB |
Output is correct |
5 |
Correct |
858 ms |
17272 KB |
Output is correct |
6 |
Correct |
505 ms |
1504 KB |
Output is correct |
7 |
Correct |
720 ms |
1672 KB |
Output is correct |
8 |
Correct |
556 ms |
1680 KB |
Output is correct |
9 |
Correct |
870 ms |
36096 KB |
Output is correct |
10 |
Correct |
962 ms |
35896 KB |
Output is correct |
11 |
Correct |
1270 ms |
61104 KB |
Output is correct |
12 |
Correct |
1196 ms |
53552 KB |
Output is correct |
13 |
Correct |
704 ms |
1824 KB |
Output is correct |
14 |
Correct |
7 ms |
1184 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
314 ms |
1768 KB |
Output is correct |
2 |
Correct |
452 ms |
1760 KB |
Output is correct |
3 |
Correct |
684 ms |
23784 KB |
Output is correct |
4 |
Correct |
1040 ms |
1760 KB |
Output is correct |
5 |
Correct |
858 ms |
17272 KB |
Output is correct |
6 |
Correct |
505 ms |
1504 KB |
Output is correct |
7 |
Correct |
720 ms |
1672 KB |
Output is correct |
8 |
Correct |
556 ms |
1680 KB |
Output is correct |
9 |
Correct |
870 ms |
36096 KB |
Output is correct |
10 |
Correct |
962 ms |
35896 KB |
Output is correct |
11 |
Correct |
1270 ms |
61104 KB |
Output is correct |
12 |
Correct |
1196 ms |
53552 KB |
Output is correct |
13 |
Correct |
704 ms |
1824 KB |
Output is correct |
14 |
Correct |
7 ms |
1184 KB |
Output is correct |
15 |
Correct |
742 ms |
1592 KB |
Output is correct |
16 |
Correct |
668 ms |
1600 KB |
Output is correct |
17 |
Correct |
444 ms |
1536 KB |
Output is correct |
18 |
Correct |
1000 ms |
17448 KB |
Output is correct |
19 |
Correct |
556 ms |
1928 KB |
Output is correct |
20 |
Correct |
1186 ms |
18152 KB |
Output is correct |
21 |
Correct |
835 ms |
1760 KB |
Output is correct |
22 |
Correct |
696 ms |
1832 KB |
Output is correct |
23 |
Correct |
1114 ms |
43888 KB |
Output is correct |
24 |
Correct |
1244 ms |
43832 KB |
Output is correct |
25 |
Correct |
1512 ms |
74880 KB |
Output is correct |
26 |
Correct |
1184 ms |
64240 KB |
Output is correct |
27 |
Correct |
742 ms |
2016 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
314 ms |
1768 KB |
Output is correct |
2 |
Correct |
452 ms |
1760 KB |
Output is correct |
3 |
Correct |
684 ms |
23784 KB |
Output is correct |
4 |
Correct |
1040 ms |
1760 KB |
Output is correct |
5 |
Correct |
858 ms |
17272 KB |
Output is correct |
6 |
Correct |
505 ms |
1504 KB |
Output is correct |
7 |
Correct |
720 ms |
1672 KB |
Output is correct |
8 |
Correct |
556 ms |
1680 KB |
Output is correct |
9 |
Correct |
870 ms |
36096 KB |
Output is correct |
10 |
Correct |
962 ms |
35896 KB |
Output is correct |
11 |
Correct |
1270 ms |
61104 KB |
Output is correct |
12 |
Correct |
1196 ms |
53552 KB |
Output is correct |
13 |
Correct |
704 ms |
1824 KB |
Output is correct |
14 |
Correct |
7 ms |
1184 KB |
Output is correct |
15 |
Correct |
742 ms |
1592 KB |
Output is correct |
16 |
Correct |
668 ms |
1600 KB |
Output is correct |
17 |
Correct |
444 ms |
1536 KB |
Output is correct |
18 |
Correct |
1000 ms |
17448 KB |
Output is correct |
19 |
Correct |
556 ms |
1928 KB |
Output is correct |
20 |
Correct |
1186 ms |
18152 KB |
Output is correct |
21 |
Correct |
835 ms |
1760 KB |
Output is correct |
22 |
Correct |
696 ms |
1832 KB |
Output is correct |
23 |
Correct |
1114 ms |
43888 KB |
Output is correct |
24 |
Correct |
1244 ms |
43832 KB |
Output is correct |
25 |
Correct |
1512 ms |
74880 KB |
Output is correct |
26 |
Correct |
1184 ms |
64240 KB |
Output is correct |
27 |
Correct |
742 ms |
2016 KB |
Output is correct |
28 |
Correct |
892 ms |
1504 KB |
Output is correct |
29 |
Correct |
976 ms |
1784 KB |
Output is correct |
30 |
Correct |
1306 ms |
42184 KB |
Output is correct |
31 |
Correct |
864 ms |
1896 KB |
Output is correct |
32 |
Correct |
1032 ms |
37192 KB |
Output is correct |
33 |
Correct |
683 ms |
1856 KB |
Output is correct |
34 |
Correct |
780 ms |
1856 KB |
Output is correct |
35 |
Correct |
1048 ms |
1896 KB |
Output is correct |
36 |
Correct |
1294 ms |
49296 KB |
Output is correct |
37 |
Correct |
1290 ms |
49184 KB |
Output is correct |
38 |
Correct |
1772 ms |
85280 KB |
Output is correct |
39 |
Correct |
1746 ms |
78400 KB |
Output is correct |
40 |
Correct |
798 ms |
2112 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
544 ms |
952 KB |
Wrong Answer [2] |
2 |
Halted |
0 ms |
0 KB |
- |