답안 #711590

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
711590 2023-03-17T09:26:09 Z Sanzhar23 Restore Array (RMI19_restore) C++14
100 / 100
361 ms 1368 KB
#include <bits/stdc++.h>

using namespace std;

#define ll long long	
#define pb push_back
#define bug cout << "bug" << endl
#define speed ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define all(x) x.begin(), x.end()
#define F first
#define S second
#define pll pair <ll, ll> 
#define pii pair <int, int> 
#define triple pair <pair <ll, ll> , ll>   
#define ull unsigned long long
#define ld long double
#define pinode pair <node*, node*>

const ll INF = 9e18 + 5;
const ll inf = 1e9 + 5;
const ll N = 5e3 + 5;
const ll shift = 2e6;
const ll mod = 998244353;
const ll mod2 = 1e9 + 9;
const ll M = 1e3 + 5;
const ll LOG = 21;
const ll sp = 263;
const ll sp2 = 9973;
const int block = 100;
const double eps = 1e-10;

ll n, m, d[N];
vector <array <ll, 3>> vt; 

int main(){
	speed;
	cin >> n >> m;
	for(int i = 1; i <= m; i++){
		int l, r, k, val;
		cin >> l >> r >> k >> val;
		l++;
		r++;
//		cout << "OGRANI : " << l << " " << r << " " << k << " " << val << endl;
		ll len = r - l + 1;
		if(val == 0){
			vt.pb({l - 1, r, len - k});
		}else{
			vt.pb({r, l - 1, -(len - k + 1)});
		}
	}
	for(int i = 1; i <= n; i++){	
		vt.pb({i - 1, i, 1});
		vt.pb({i, i - 1, 0});
	}
	for(int i = 0; i <= n; i++){
		d[i] = INF;
	}
	d[0] = 0;
	for(int col = 0; col <= n; col++){
		for(int i = 0; i < vt.size(); i++){
			ll a = vt[i][0], b = vt[i][1], w = vt[i][2];
			if(d[a] < INF){
				if(d[b] > d[a] + w){
					d[b] = max(-INF, d[a] + w);
				}
			}
		}
	}
	bool cycle = false;
	for(int i = 0; i < vt.size(); i++){
		ll a = vt[i][0], b = vt[i][1], w = vt[i][2];
		if(d[a] < INF){
			if(d[b] > d[a] + w){
				cycle = true;
				break;
			}
		}
		if(cycle)
			break;
	}
	if(cycle){
		cout << -1 << endl;
		return 0;
	}
	for(int i = 1; i <= n; i++){
		cout << d[i] - d[i - 1] << " ";
	}
}
/*		
%I64d6


7 7
0 2 1 0
0 6 1 0
0 1 1 0
1 1 1 1
6 6 1 1
3 6 1 1
2 4 1 1



0 1 1 1 1 1 1
		



%I64d
*/ 

Compilation message

restore.cpp: In function 'int main()':
restore.cpp:60:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<long long int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |   for(int i = 0; i < vt.size(); i++){
      |                  ~~^~~~~~~~~~~
restore.cpp:70:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<long long int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |  for(int i = 0; i < vt.size(); i++){
      |                 ~~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 324 KB Output is correct
6 Correct 1 ms 320 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 126 ms 1360 KB Output is correct
2 Correct 99 ms 1360 KB Output is correct
3 Correct 116 ms 1360 KB Output is correct
4 Correct 100 ms 1356 KB Output is correct
5 Correct 313 ms 1360 KB Output is correct
6 Correct 337 ms 1232 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 126 ms 1360 KB Output is correct
2 Correct 99 ms 1360 KB Output is correct
3 Correct 116 ms 1360 KB Output is correct
4 Correct 100 ms 1356 KB Output is correct
5 Correct 313 ms 1360 KB Output is correct
6 Correct 337 ms 1232 KB Output is correct
7 Correct 105 ms 1356 KB Output is correct
8 Correct 159 ms 1300 KB Output is correct
9 Correct 115 ms 1356 KB Output is correct
10 Correct 127 ms 1360 KB Output is correct
11 Correct 361 ms 1360 KB Output is correct
12 Correct 361 ms 1368 KB Output is correct
13 Correct 101 ms 1360 KB Output is correct
14 Correct 164 ms 1348 KB Output is correct
15 Correct 139 ms 1356 KB Output is correct
16 Correct 117 ms 1352 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 324 KB Output is correct
6 Correct 1 ms 320 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 126 ms 1360 KB Output is correct
12 Correct 99 ms 1360 KB Output is correct
13 Correct 116 ms 1360 KB Output is correct
14 Correct 100 ms 1356 KB Output is correct
15 Correct 313 ms 1360 KB Output is correct
16 Correct 337 ms 1232 KB Output is correct
17 Correct 105 ms 1356 KB Output is correct
18 Correct 159 ms 1300 KB Output is correct
19 Correct 115 ms 1356 KB Output is correct
20 Correct 127 ms 1360 KB Output is correct
21 Correct 361 ms 1360 KB Output is correct
22 Correct 361 ms 1368 KB Output is correct
23 Correct 101 ms 1360 KB Output is correct
24 Correct 164 ms 1348 KB Output is correct
25 Correct 139 ms 1356 KB Output is correct
26 Correct 117 ms 1352 KB Output is correct
27 Correct 129 ms 1348 KB Output is correct
28 Correct 108 ms 1360 KB Output is correct
29 Correct 139 ms 1368 KB Output is correct
30 Correct 100 ms 1352 KB Output is correct
31 Correct 95 ms 1360 KB Output is correct
32 Correct 119 ms 1320 KB Output is correct
33 Correct 328 ms 1360 KB Output is correct
34 Correct 358 ms 1360 KB Output is correct
35 Correct 123 ms 1360 KB Output is correct
36 Correct 164 ms 1360 KB Output is correct