답안 #903471

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
903471 2024-01-11T08:00:02 Z simona1230 Inside information (BOI21_servers) C++17
10 / 100
63 ms 3096 KB
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
 
int n,k;
int in[4001][4001];
 
void slow()
{
    for(int i=1;i<=n;i++)
        in[i][i]=1;
    for(int i=1;i<=n+k-1;i++)
    {
        char c;
        cin>>c;
        int x,y;
        if(c=='S')
        {
            cin>>x>>y;
            for(int j=1;j<=n;j++)
            {
                in[x][j]=in[y][j]=max(in[x][j],in[y][j]);
            }
        }
        if(c=='C')
        {
            cin>>x;
            int cnt=0;
            for(int j=1;j<=n;j++)
                cnt+=in[j][x];
            cout<<cnt<<endl;
        }
        if(c=='Q')
        {
            cin>>x>>y;
            if(in[x][y])cout<<"yes"<<endl;
            else cout<<"no"<<endl;
        }
    }
}
 
 
int t[120001];
void subt2()
{
    t[1]=1;
    int sec=2;
    for(int i=1;i<=n+k-1;i++)
    {
        char c;
        cin>>c;
 
        if(c=='S')
        {
            int x,y;
            cin>>x>>y;
 
            t[max(x,y)]=sec++;
        }
 
        if(c=='Q')
        {
            int x,y;
            cin>>x>>y;
 
            if(t[y]&&t[y]<=t[x]||x==1&&t[y]||y==1&&t[x]||x==y)cout<<"yes"<<endl;
            else cout<<"no"<<endl;
        }
 
        if(c=='C')
        {
            int x;
            cin>>x;
 
            if(t[x]==0)cout<<1<<endl;
            else if(x==1)cout<<sec-1<<endl;
            else cout<<sec-t[x]+1<<endl;
        }
    }
}
 
int inc[120001],de[120001];
int find_inc(int ver)
{
    if(ver==inc[ver])return ver;
    return inc[ver]=find_inc(inc[ver]);
}
int find_de(int ver)
{
    if(ver==de[ver])return ver;
    return de[ver]=find_de(de[ver]);
}
 
void subt3()
{
    int sec=1;
    for(int i=1;i<=n+k-1;i++)
    {
        int x,y;
        char c;
        cin>>c>>x;
        if(c=='S')
        {
            cin>>y;
            if(y<x)swap(x,y);
            t[x]=sec++;
            inc[x]=de[x]=x;
            if(t[x-1])inc[x-1]=x;
            if(t[x+1])de[x+1]=x;
        }
        if(c=='Q')
        {
            cin>>y;
            swap(x,y);
            int ver=x;
            if(y>x)
            {
                if(!t[ver])
                {
                    cout<<"no"<<endl;
                    continue;
                }
                ver=find_inc(ver);
                if(ver+1>=y)cout<<"yes"<<endl;
                else cout<<"no"<<endl;
            }
            else if(x>y)
            {
                if(!t[ver-1])
                {
                    cout<<"no"<<endl;
                    continue;
                }
                ver=find_de(ver-1);
                if(ver<=y)cout<<"yes"<<endl;
                else cout<<"no"<<endl;
            }
            else cout<<"yes"<<endl;
        }
        if(c=='C')
        {
            int cnt=1;
            /*for(int j=1;j<n;j++)
                cout<<inc[j]<<" ";
            cout<<endl;*/
            if(x!=n&&t[x])
            {
                //cout<<"! "<<x<<endl;
                cnt+=find_inc(x)-x+1;
            }
            if(x!=1&&t[x-1])
            {
                //cout<<"!! "<<x-1<<endl;
                cnt+=x-find_de(x-1);
            }
            cout<<cnt<<endl;
        }
    }
}
 
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
 
	cin>>n>>k;
	/*if(n<=4000)slow();
    else*/ subt3();
 
	return 0;
}

Compilation message

servers.cpp: In function 'void subt2()':
servers.cpp:66:20: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   66 |             if(t[y]&&t[y]<=t[x]||x==1&&t[y]||y==1&&t[x]||x==y)cout<<"yes"<<endl;
      |                ~~~~^~~~~~~~~~~~
servers.cpp:66:50: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   66 |             if(t[y]&&t[y]<=t[x]||x==1&&t[y]||y==1&&t[x]||x==y)cout<<"yes"<<endl;
      |                                              ~~~~^~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 17 ms 604 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 17 ms 604 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 17 ms 604 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 17 ms 604 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 604 KB Output is correct
2 Correct 57 ms 3096 KB Output is correct
3 Correct 40 ms 2908 KB Output is correct
4 Correct 62 ms 2924 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 604 KB Output is correct
2 Correct 57 ms 3096 KB Output is correct
3 Correct 40 ms 2908 KB Output is correct
4 Correct 62 ms 2924 KB Output is correct
5 Correct 27 ms 600 KB Output is correct
6 Correct 40 ms 2836 KB Output is correct
7 Correct 41 ms 2904 KB Output is correct
8 Correct 40 ms 2772 KB Output is correct
9 Correct 45 ms 2904 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 25 ms 740 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 25 ms 740 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 27 ms 808 KB Output is correct
2 Correct 55 ms 2936 KB Output is correct
3 Correct 63 ms 2900 KB Output is correct
4 Correct 46 ms 2908 KB Output is correct
5 Incorrect 17 ms 604 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 27 ms 808 KB Output is correct
2 Correct 55 ms 2936 KB Output is correct
3 Correct 63 ms 2900 KB Output is correct
4 Correct 46 ms 2908 KB Output is correct
5 Incorrect 17 ms 604 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 23 ms 820 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 23 ms 820 KB Output isn't correct
2 Halted 0 ms 0 KB -