답안 #268608

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
268608 2020-08-16T13:57:16 Z stefantaga Queue (CEOI06_queue) C++14
2 / 100
1000 ms 1732 KB
#include <bits/stdc++.h>

using namespace std;
map <int,int> m;
map <int,pair<int,int> > m1;
int nr,i,n,q;
struct wow
{
    int x,y;
}v[50005];
struct query
{
    int poz;char tip;
}query[50005];
int q1;
pair <int,int> valori[50005];
int pozitie (int x)
{
    int sol=0,i;
    if (m1.find(x)!=m1.end())
    {
        for (i=m1[x].second+1;i<=q1;i++)
        {
            if (valori[i].first<=valori[i].second)
            {
                if (valori[i].first<=m1[x].first+sol&&m1[x].first+sol<=valori[i].second)
            {
                sol++;
            }
            }
            else
            {
                 if (valori[i].first>=m1[x].first+sol&&m1[x].first+sol>=valori[i].second)
            {
                sol--;
            }
            }
        }
        m1[x].first+=sol;
        return m1[x].first;
    }
    for (i=1;i<=q1;i++)
        {
            if (valori[i].first<=valori[i].second)
            {
                if (valori[i].first<=x+sol&&x+sol<=valori[i].second)
            {
                sol++;
            }
            }
            else
            {
                if (valori[i].first>=x+sol&&x+sol>=valori[i].second)
            {
                sol--;
            }
            }
        }
    return x+sol;
}
int pozitie1,pozitie2;
int main()
{
    ios_base :: sync_with_stdio(false);
    cin.tie(0);
    #ifdef HOME
    ifstream cin("queue.in");
    ofstream cout("queue.out");
    #endif // HOME
    cin>>n;
    for (i=1;i<=n;i++)
    {
        cin>>v[i].x>>v[i].y;
        pozitie1=pozitie(v[i].y);
        pozitie2=pozitie(v[i].x);
        if (pozitie1<=pozitie2)
        {
            valori[++q1]={pozitie1,pozitie2-1};
            m1[v[i].x]={pozitie1,i};
        }
        else
        {
            valori[++q1]={pozitie1-1,pozitie2};
            m1[v[i].x]={pozitie1-1,i};
        }
    }
    cin>>q;
    for (i=1;i<=q;i++)
    {
        cin>>query[i].tip>>query[i].poz;
        if (query[i].tip=='P')
        {
            cout<<pozitie(query[i].poz)<<'\n';
        }
        else
        {
            cout<<"-1"<<'\n';
        }
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Partially correct 0 ms 384 KB Partially correct
2 Incorrect 1 ms 384 KB Output isn't correct
3 Incorrect 7 ms 384 KB Output isn't correct
4 Incorrect 19 ms 384 KB Output isn't correct
5 Incorrect 181 ms 1144 KB Output isn't correct
6 Execution timed out 1090 ms 1336 KB Time limit exceeded
7 Execution timed out 1091 ms 1100 KB Time limit exceeded
8 Execution timed out 1075 ms 1732 KB Time limit exceeded
9 Execution timed out 1091 ms 1112 KB Time limit exceeded
10 Execution timed out 1089 ms 1144 KB Time limit exceeded
11 Execution timed out 1089 ms 1176 KB Time limit exceeded
12 Execution timed out 1092 ms 1144 KB Time limit exceeded
13 Execution timed out 1087 ms 1144 KB Time limit exceeded
14 Execution timed out 1083 ms 1152 KB Time limit exceeded
15 Execution timed out 1091 ms 1232 KB Time limit exceeded
16 Execution timed out 1096 ms 1272 KB Time limit exceeded
17 Incorrect 146 ms 888 KB Output isn't correct
18 Execution timed out 1094 ms 724 KB Time limit exceeded
19 Execution timed out 1098 ms 632 KB Time limit exceeded
20 Execution timed out 1097 ms 760 KB Time limit exceeded
21 Execution timed out 1090 ms 1272 KB Time limit exceeded
22 Execution timed out 1095 ms 1144 KB Time limit exceeded
23 Execution timed out 1098 ms 1144 KB Time limit exceeded
24 Execution timed out 1093 ms 1144 KB Time limit exceeded
25 Execution timed out 1090 ms 1272 KB Time limit exceeded