Submission #272074

# Submission time Handle Problem Language Result Execution time Memory
272074 2020-08-18T08:36:31 Z egekabas Restore Array (RMI19_restore) C++14
0 / 100
600 ms 632 KB
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef pair<ull, ull> pull;
typedef pair<int, int> pii;
typedef pair<ld, ld> pld;
struct seg{
    int l, r, type, cnt; 
};
int n, m;
seg a[10009];
int ans[10009];
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    
    //freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);

    cin >> n >> m;
    for(int i = 0; i < m; ++i){
        cin >> a[i].l >> a[i].r >> a[i].cnt >> a[i].type;
        if(a[i].type == 1)
            a[i].cnt = a[i].r-a[i].l+2-a[i].cnt;
    }
    for(int i = 0; i < n; ++i){
        pii mini = {1e9, 1e9};
        for(int j = 0; j < m; ++j){
            if(a[j].cnt <= 0 || a[j].l > i || a[j].r < i)
                continue;
            mini = min(mini, {a[j].r, j});
        }
        if(mini.ff == 1e9)
            ans[i] = 0;
        else
            ans[i] = a[mini.ss].type;
        for(int j = 0; j < m; ++j)
            if(a[j].l <= i && i <= a[j].r && ans[i] == a[j].type)
                a[j].cnt--;
    }
    for(int i = n-1; i >= 0; --i){
        pii maxi = {-1e9, -1e9};
        for(int j = 0; j < m; ++j){
            if(a[j].cnt <= 0 || a[j].l > i || a[j].r < i)
                continue;
            maxi = max(maxi, {a[j].l, j});
        }
        if(maxi.ff == -1e9)
            continue;
        for(int j = 0; j < m; ++j)
            if(a[j].l <= i && i <= a[j].r && ans[i] == a[j].type)
                a[j].cnt++;
        ans[i] = a[maxi.ss].type;
        for(int j = 0; j < m; ++j)
            if(a[j].l <= i && i <= a[j].r && ans[i] == a[j].type)
                a[j].cnt--;
    }
    for(int j = 0; j < m; ++j)
        if(a[j].cnt > 0){
            cout << "-1\n";
            return 0;
        }
    for(int i = 0; i < n; ++i)
        cout << ans[i] << ' ';
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 0 ms 384 KB Output is correct
8 Incorrect 1 ms 384 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 358 ms 512 KB Output is correct
2 Correct 331 ms 512 KB Output is correct
3 Correct 328 ms 544 KB Output is correct
4 Correct 343 ms 512 KB Output is correct
5 Execution timed out 1083 ms 632 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 358 ms 512 KB Output is correct
2 Correct 331 ms 512 KB Output is correct
3 Correct 328 ms 544 KB Output is correct
4 Correct 343 ms 512 KB Output is correct
5 Execution timed out 1083 ms 632 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 0 ms 384 KB Output is correct
8 Incorrect 1 ms 384 KB Output isn't correct
9 Halted 0 ms 0 KB -