답안 #852385

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
852385 2023-09-21T17:46:23 Z alexdd Restore Array (RMI19_restore) C++17
0 / 100
8 ms 1112 KB
#include<bits/stdc++.h>
using namespace std;
//ifstream fin("input.in");
//#define cin fin
int cnt0[5005];
vector<pair<int,int>> con[5005];
int n,m;
void calc_cnt0()
{
    deque<int> dq;
    dq.push_back(0);
    while(!dq.empty())
    {
        int nod = dq.front();
        dq.pop_front();
        for(auto x:con[nod])
        {
            int adj = x.first;
            if(cnt0[adj] < cnt0[nod] + x.second && adj!=0)
            {
                cnt0[adj] = cnt0[nod] + x.second;
                dq.push_back(adj);
            }
        }
    }
}
signed main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin>>n>>m;
    int l,r,k,val;
    for(int i=0;i<m;i++)
    {
        cin>>l>>r>>k>>val;
        l++;
        r++;
        if(val==0)
        {
            con[l-1].push_back({r,k});
        }
        else
        {
            con[r].push_back({l-1,-k});
        }
    }
    for(int i=1;i<=n;i++)
    {
        cnt0[i]=-1;
        con[i].push_back({i-1,-1});
        con[i-1].push_back({i,0});
    }
    calc_cnt0();
    for(int i=0;i<=n;i++)
    {
        for(auto x:con[i])
        {
            if(cnt0[x.first] < cnt0[i] + x.second)
            {
                cout<<-1;
                return 0;
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        if(cnt0[i]==cnt0[i-1])
            cout<<1<<" ";
        else
            cout<<0<<" ";
    }
    return 0;
}
/**

restrictia l,r,k,0:
cnt0[r] - cnt0[l-1] >= k

cnt0[r] >= k + cnt0[l-1] *******

cnt0[l-1] <= cnt0[r] - k

restrictia l,r,k,1:
cnt0[r] - cnt0[l-1] <= k
cnt0[r] <= k + cnt0[l-1]

cnt0[l-1] >= cnt0[r] - k *****

cnt0[i-1] >= cnt0[i] - 1

cnt0[i] >= cnt0[i-1] + 0

avem doar restrictii dinastea


7 10
0 3 4 1
2 3 1 0
1 2 2 0
1 3 2 0
0 5 3 0
0 5 5 1
1 4 2 0
2 4 1 0
1 3 3 0
3 5 2 0

correct output: idk but not -1

*/
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Incorrect 1 ms 348 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 860 KB Output is correct
2 Correct 8 ms 860 KB Output is correct
3 Correct 8 ms 860 KB Output is correct
4 Incorrect 7 ms 1112 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 860 KB Output is correct
2 Correct 8 ms 860 KB Output is correct
3 Correct 8 ms 860 KB Output is correct
4 Incorrect 7 ms 1112 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Incorrect 1 ms 348 KB Output isn't correct
4 Halted 0 ms 0 KB -