답안 #46266

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
46266 2018-04-18T12:25:39 Z iletavcioski Bali Sculptures (APIO15_sculpture) C++17
0 / 100
2 ms 564 KB
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
typedef unsigned long long ll;
ll funkcija(ll x,ll y)
{
    string s1="",s2="";
    while(x>=0)
    {
        s1+=(x%2+'0');
        x/=2;
        if(x==0)
            break;
    }
    while(y>=0)
    {
        s2+=(y%2+'0');
        y/=2;
        if(y==0)
            break;
    }
      
    if(s1.size()<s2.size())
        swap(s1,s2);
    while(s2.size()<s1.size())
        s2+='0';
    reverse(s1.begin(),s1.end());
    reverse(s2.begin(),s2.end());
    string ss="";
    for(int i=0;i<s1.size();i++)
        if(s1[i]=='1'||s2[i]=='1')
            ss+='1';
        else
            ss+='0';
    reverse(ss.begin(),ss.end());
    ll bb=0;
    for(int i=0;i<ss.size();i++)
    {
        if(ss[i]=='1')
            bb+=pow(2,double(i));
    }
    return bb;
}
int main()
{
    ios_base::sync_with_stdio(false);
    int n,a,b;
    cin>>n>>a>>b;
    if(n<=500)
    {
    vector<ll> v;
   static  ll dp[2000+1][2000+1];
    for(int i=0;i<=n;i++)
    {
        for(int j=0;j<=b;j++)
        {
            dp[i][j]=18446744073709551615;
        }
    }
    dp[0][0]=0;
    v.push_back((ll)0);
    for(int i=0;i<n;i++)
    {
        ll aa;
        cin>>aa;
        v.push_back(aa);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            ll brojac=0;
            for(int k=i;k>=1;k--)
            {
                brojac+=v[k];
                if(dp[k-1][j-1]==18446744073709551615)
                    continue;
                ll broj=(brojac|dp[k-1][j-1]);
                dp[i][j]=min(dp[i][j],broj);
            }
        }
    }
    ll maxi=18446744073709551615;
    for(int i=a;i<=b;i++)
        maxi=min(maxi,dp[n][i]);
    cout<<maxi<<endl;
    return 0;
    }
    else
    {
        vector<ll> v;
    vector<ll> dp(n+1,18446744073709551615);
    dp[0]=0;
    v.push_back(-1);
    for(int i=0;i<n;i++)
    {
        ll a;
        cin>>a;
        v.push_back(a);
    }
    for(int i=1;i<=n;i++)
    {
        ll brojac=0;
        int broj=0;
        if(dp[i-1]!=18446744073709551615)
        {
            for(int j=i;j<=n;j++)
            {
                brojac+=v[j];
                broj++;
                if(broj>=a&&broj<=b&&i-1!=0)
                {
                    dp[j]=min(dp[j],(brojac|dp[i-1]));
                }
                else if(i-1==0&&broj>=a&&broj<=b)
                {
                    dp[j]=min(dp[j],brojac);
                }
            }
        }
    }
      
    cout<<dp[n]<<endl;
    return 0;
    }
    return 0;
}

Compilation message

sculpture.cpp:59:22: warning: integer constant is so large that it is unsigned
             dp[i][j]=18446744073709551615;
                      ^~~~~~~~~~~~~~~~~~~~
sculpture.cpp:78:34: warning: integer constant is so large that it is unsigned
                 if(dp[k-1][j-1]==18446744073709551615)
                                  ^~~~~~~~~~~~~~~~~~~~
sculpture.cpp:85:13: warning: integer constant is so large that it is unsigned
     ll maxi=18446744073709551615;
             ^~~~~~~~~~~~~~~~~~~~
sculpture.cpp:94:23: warning: integer constant is so large that it is unsigned
     vector<ll> dp(n+1,18446744073709551615);
                       ^~~~~~~~~~~~~~~~~~~~
sculpture.cpp:107:21: warning: integer constant is so large that it is unsigned
         if(dp[i-1]!=18446744073709551615)
                     ^~~~~~~~~~~~~~~~~~~~
sculpture.cpp: In function 'll funkcija(ll, ll)':
sculpture.cpp:32:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<s1.size();i++)
                 ~^~~~~~~~~~
sculpture.cpp:39:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<ss.size();i++)
                 ~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Incorrect 2 ms 376 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 436 KB Output is correct
2 Incorrect 2 ms 440 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 476 KB Output is correct
2 Incorrect 2 ms 480 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 488 KB Output is correct
2 Incorrect 2 ms 544 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 564 KB Output is correct
2 Incorrect 2 ms 564 KB Output isn't correct
3 Halted 0 ms 0 KB -