QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#66026 | #5110. Splitstream | rumen_m# | WA | 6ms | 13440kb | C++14 | 2.4kb | 2022-12-06 00:12:29 | 2022-12-06 00:12:30 |
Judging History
answer
# include <bits/stdc++.h>
const int MAXN = 1e6+5;
using namespace std;
struct step
{
char type;
int a,b,c;
};
step w[MAXN];
int from[MAXN],to[MAXN],sz[MAXN];
bool fl[MAXN];
void bfs()
{
queue <int> q;
q.push(1);
while(!q.empty())
{
int x = q.front();
q.pop();
//cout<<x<<endl;
int id = to[x];
if(id==0)continue;
if(fl[x])continue;
fl[x] = 1;
if(w[id].type == 'S')
{
//cout<<"OK"<<endl;
sz[w[id].b] = (sz[x]+1)/2;
sz[w[id].c] = (sz[x]/2);
q.push(w[id].b);
q.push(w[id].c);
}
else
{
sz[w[id].c] = sz[w[id].a] + sz[w[id].b];
// cout<<w[id].c<<" --> "<<sz[w[id].c]<<endl;
q.push(w[id].c);
}
}
}
int findit(int x, int k)
{
//cout<<x<<" && "<<k<<" "<<sz[x]<<endl;
if(x == 1) return k;
int id = from[x];
if(w[id].type == 'M')
{
int a = w[id].a;
int b = w[id].b;
if(2*min(sz[a],sz[b])>=k)
{
// cout<<"Here"<<endl;
if(k%2 == 0)
{
return findit(b,k/2);
}
else
return findit(a,(k+1)/2);
}else
{
if(sz[a] < sz[b])
{
return findit(b,k-sz[a]);
}
else
return findit(a, k-sz[b]);
}
}
else
{
int a = w[id].a;
int b = w[id].b;
int c = w[id].c;
if(b==x)
{
return findit(a,k*2-1);
}
else
return findit(a,k*2);
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n,q,m,i,j;
cin>>m>>n>>q;
for(i = 1;i<=n;i++)
{
cin>>w[i].type>>w[i].a>>w[i].b>>w[i].c;
if(w[i].type == 'S')
{
to[w[i].a] = i;
from[w[i].b] = i;
from[w[i].c] = i;
}
else
{
to[w[i].a] = i;
to[w[i].b] = i;
from[w[i].c] = i;
}
}
sz[1] = m;
bfs();
int x,k;
for(i = 1;i<=q;i++)
{
cin>>x>>k;
if(sz[x]<k)cout<<"none"<<endl;
else
cout<<findit(x,k)<<endl;;
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 9552kb
input:
5 8 26 M 8 9 13 S 2 4 5 S 1 2 3 M 6 5 8 S 4 9 10 S 10 14 15 S 3 6 7 S 7 11 12 2 3 2 4 3 2 3 3 4 2 4 3 5 1 5 2 6 1 6 2 7 1 7 2 8 2 8 3 9 1 9 2 10 1 10 2 11 1 11 2 12 1 13 3 13 4 14 1 14 2 15 1
output:
5 none 4 none 5 none 3 none 2 none 4 none 3 none 1 none 5 none 4 none none 3 none 5 none none
result:
ok 26 lines
Test #2:
score: 0
Accepted
time: 6ms
memory: 11488kb
input:
1000000000 8191 1000 S 1 2 3 S 2 4 5 S 3 6 7 S 4 8 9 S 5 10 11 S 6 12 13 S 7 14 15 S 8 16 17 S 9 18 19 S 10 20 21 S 11 22 23 S 12 24 25 S 13 26 27 S 14 28 29 S 15 30 31 S 16 32 33 S 17 34 35 S 18 36 37 S 19 38 39 S 20 40 41 S 21 42 43 S 22 44 45 S 23 46 47 S 24 48 49 S 25 50 51 S 26 52 53 S 27 54 55...
output:
1 3 999999999 499999999 333333331 999999997 499999997 333333329 2 4 1000000000 500000000 333333332 999999998 499999998 333333330 1 5 999999997 499999997 333333329 999999993 499999993 333333325 3 7 999999999 499999999 333333331 999999995 499999995 333333327 2 6 999999998 499999998 333333330 999999994...
result:
ok 1000 lines
Test #3:
score: 0
Accepted
time: 2ms
memory: 9608kb
input:
1000000000 8190 1000 S 1 2 3 M 8193 8194 8192 S 2 4 5 M 8195 8196 8193 S 3 6 7 M 8197 8198 8194 S 4 8 9 M 8199 8200 8195 S 5 10 11 M 8201 8202 8196 S 6 12 13 M 8203 8204 8197 S 7 14 15 M 8205 8206 8198 S 8 16 17 M 8207 8208 8199 S 9 18 19 M 8209 8210 8200 S 10 20 21 M 8211 8212 8201 S 11 22 23 M 821...
output:
1 2 1000000000 500000000 333333333 999999999 499999999 333333332 1 1 3 3 999999999 999999999 499999999 499999999 333333331 333333331 999999997 999999997 499999997 499999997 333333329 333333329 2 2 4 4 1000000000 1000000000 500000000 500000000 333333332 333333332 999999998 999999998 499999998 4999999...
result:
ok 1000 lines
Test #4:
score: -100
Wrong Answer
time: 6ms
memory: 13440kb
input:
1000000000 10000 1000 S 1 2 3 S 2 4 5 S 4 6 7 S 6 8 9 S 8 10 11 S 10 12 13 S 12 14 15 S 14 16 17 S 16 18 19 S 18 20 21 S 20 22 23 S 22 24 25 S 24 26 27 S 26 28 29 S 28 30 31 S 30 32 33 S 32 34 35 S 34 36 37 S 36 38 39 S 38 40 41 S 40 42 43 S 42 44 45 S 44 46 47 S 46 48 49 S 48 50 51 S 50 52 53 S 52 ...
output:
1 1 536870913 none 2 none 3 none 4 none 5 none 6 none 7 none 8 none 9 none 10 none 11 none 12 none 13 none 14 none 15 none 16 none 17 none 18 none 19 none 20 none 21 none 22 none 23 none 24 none 25 none 26 none 27 none 28 none 29 none 30 none 31 none 32 none 33 none 34 none 35 none 36 none 37 none 3...
result:
wrong answer 4th lines differ - expected: '1000000000', found: 'none'