답안 #559082

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
559082 2022-05-09T11:11:42 Z Tenis0206 Restore Array (RMI19_restore) C++11
0 / 100
4 ms 980 KB
#include <bits/stdc++.h>

using namespace std;

const int oo = 0x3f3f3f3f;

int n,m;

int d[5005],nr[5005];
bool sel[5005];

vector<pair<int,int>> G[5005];

void Bellman()
{
    queue<int> q;
    for(int i=0; i<=n; i++)
    {
        d[i] = oo;
        sel[i] = false;
    }
    d[0] = 0;
    sel[0] = true;
    q.push(0);
    nr[0] = 1;
    while(!q.empty())
    {
        int nod = q.front();
        q.pop();
        for(auto it : G[nod])
        {
            if(d[nod] + it.second < d[it.first])
            {
                d[it.first] = d[nod] + it.second;
                if(!sel[it.first])
                {
                    q.push(it.first);
                    sel[it.first] = true;
                }
                nr[it.first] = nr[nod] + 1;
                if(nr[it.first]>n)
                {
                    cout<<-1<<'\n';
                    exit(0);
                }
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        cout<<d[i] - d[i-1]<<' ';
    }
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>m;
    for(int i=1; i<=n; i++)
    {
        G[i-1].push_back({i,1});
        G[i].push_back({i-1,0});
    }
    for(int i=1; i<=m; i++)
    {
        int l,r,k,val;
        cin>>l>>r>>k>>val;
        ++l;
        ++r;
        if(val==0)
        {
            G[l-1].push_back({r,(r - l + 1) - k});
        }
        else
        {
            G[r].push_back({l-1,-((r - l + 1) - (k - 1))});
        }
    }
    Bellman();
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Incorrect 0 ms 340 KB Integer 2 violates the range [-1, 1]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 980 KB Integer 25 violates the range [-1, 1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 980 KB Integer 25 violates the range [-1, 1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Incorrect 0 ms 340 KB Integer 2 violates the range [-1, 1]
3 Halted 0 ms 0 KB -