#include<bits/stdc++.h>
using namespace std;
#define sz(v) (int)(v).size()
struct Edge{
int u,v,w;
Edge(int _u = 0, int _v = 0, int _w = 0){
u = _u,
v = _v,
w = _w;
}
};
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
#define name "InvMOD"
freopen(name".INP", "r", stdin);
freopen(name".OUT", "w", stdout);
int n,m; cin >> n >> m;
vector<Edge> E;
for(int i = 0; i < m; i++){
int l,r,k,value;
cin >> l >> r >> k >> value;
/*
k = 0:
pref[r] - pref[l - 1] <= (r - l + 1) - k
pref[l - 1] + (r - l + 1) - k >= pref[r]
k = 1:
pref[r] - pref[l - 1] >= (r - l + 1) - k + 1
pref[r] - (r - l + 1) + k - 1 >= pref[l - 1]
*/
l++, r++;
if(!value){
E.emplace_back(l - 1, r, (r - l + 1) - k);
}
else{
E.emplace_back(r, l - 1, -(r - l + 1) + k - 1);
}
}
for(int i = 1; i <= n; i++){
E.emplace_back(i - 1, i, 1);
E.emplace_back(i, i - 1, 0);
}
vector<int> ans(n + 1, n + 1);
ans[0] = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < sz(E); j++){
int u = E[j].u, v = E[j].v, w = E[j].w;
if(ans[u] + w < ans[v]){
ans[v] = ans[u] + w;
}
}
}
for(int j = 0; j < sz(E); j++){
int u = E[j].u, v = E[j].v, w = E[j].w;
if(ans[u] + w < ans[v]){
cout << "-1\n";
return 0;
}
}
for(int i = 1; i <= n; i++){
cout << ans[i] - ans[i - 1] << " ";
} cout << "\n";
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
restore.cpp: In function 'int main()':
restore.cpp:21:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
21 | freopen(name".INP", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
restore.cpp:22:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
22 | freopen(name".OUT", "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |