Submission #1197485

#TimeUsernameProblemLanguageResultExecution timeMemory
1197485YassirSalamaPaint By Numbers (IOI16_paint)C++20
32 / 100
0 ms328 KiB
#include "paint.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#ifdef IOI
template<typename T> 
void dbg(const T& t){
    cout<<t<<endl;
}
template<typename T,typename... Args>
void dbg(const T& t,const Args&... args){
    cout<<t<<" , ";
    dbg(args...);
}
#define dbg(...) cout<<'('<<#__VA_ARGS__<<") : ";dbg(__VA_ARGS__);
#else
#define dbg(...) 1337;
#endif
// string solve_puzzle(string s, vector<int> c) {
//     int n = s.length();
//     int a = c[0];
//     int l = -1e9;
//     int r = 1e9;
//     string ans(n,'X');
//     for(int i  =0;i<n;i++){
//         if(i>=a||i<n-a){
//             ans[i]='?';
//         }
//     }
//     return ans;
// }



string solve_puzzle(string s, vector<int> c) {
    int n = s.length();
    int k = c.size();
    k--;
    ll pref[k];
    memset(pref,0,sizeof(pref));
    for(int i  =0;i<k;i++){
        pref[i] = c[i];
        pref[i]++;
        if(i) pref[i]+=pref[i-1];
    }
    string S(n,'?');
    int t = n;
    ll arr[n+1];
    while(k>=0){
        memset(arr,0,sizeof(arr));
        ll a = c[k];
        ll s = (k?pref[k-1]:0);
        ll l = s;
        ll r = t-a;
        dbg(l,r)
        if(r-l+1<=a){
            for(int j = l;j<=r;j++){
                arr[j]++;
                arr[min((ll)n,j+a)]--;
            }
            for(int i=1;i<n;i++) arr[i]+=arr[i-1];
            ll x = *max_element(arr,arr+n+1);
            for(int j=l;j<min((ll)n,r+a);j++){
                if(arr[j]==x){
                    S[j]='X';
                }
            }
            if(l==r){
                if(r)
                    S[r-1]='_';
            }
        }
        t = r-1,
        k--;
    }
    return S;
}

Compilation message (stderr)

paint.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
paint_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...