Submission #1214874
Source Code Expand
#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0; i < n; i++)
#define rep1(i,n) for(int i = 1; i < n; i++)
#define repv(i,n) for(int i = n-1; i >= 0; i--)
#define fi first
#define sc second
#define pb push_back
using namespace std;
typedef long long ll;
char BUF[3500000];
inline void I(int&a){scanf("%d",&a);}
inline void I(int&a,int&b){scanf("%d%d",&a,&b);}
inline void I(int&a,int&b,int&c){scanf("%d%d%d",&a,&b,&c);}
inline void I(int&a,int&b,int&c,int&d){scanf("%d%d%d%d",&a,&b,&c,&d);}
inline void L(ll&a){scanf("%lld",&a);}
inline void L(ll&a,ll&b){scanf("%lld%lld",&a,&b);}
inline void L(ll&a,ll&b,ll&c){scanf("%lld%lld%lld",&a,&b,&c);}
inline void L(ll&a,ll&b,ll&c,ll&d){scanf("%lld%lld%lld%lld",&a,&b,&c,&d);}
inline void S(string&str){str.clear();scanf("%s",BUF);int s=strlen(BUF);rep(i,s)str.pb(BUF[i]);}
inline void SV(vector<int>&v){v.clear();scanf("%s",BUF);int s=strlen(BUF);rep(i,s)if('a'<=BUF[i]&&BUF[i]<='z')v.pb(BUF[i]-'a');else v.pb(BUF[i]-'A');}
const auto EPS = 1e-10;
const auto INF = 100000000;
const auto MOD = 1000000007;
typedef pair<ll,ll> P;
ll n, k;
ll a[15];
ll ans = MOD*(ll)MOD;
int main(){
L(n,k);
rep(i,n) L(a[i]);
rep(i,(1<<n)){
if(__builtin_popcount(i) != k) continue;
if(!(i&1)) continue;
ll h = -1;
ll cnt = 0;
rep(j,n){
if((1<<j)&i){
if(a[j] <= h){
cnt += h+1-a[j];
h++;
} else{
h = a[j];
}
} else{
h = max(h,a[j]);
}
}
ans = min(ans,cnt);
}
cout << ans << endl;
}
Submission Info
Submission Time
2017-04-10 09:13:55+0900
Task
B - Buildings are Colorful!
User
gasin
Language
C++14 (GCC 5.4.1)
Score
350
Code Size
1768 Byte
Status
AC
Exec Time
1 ms
Memory
256 KB
Compile Error
./Main.cpp: In function ‘void L(ll&, ll&)’:
./Main.cpp:17:49: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
inline void L(ll&a,ll&b){scanf("%lld%lld",&a,&b);}
^
./Main.cpp: In function ‘void L(ll&)’:
./Main.cpp:16:37: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
inline void L(ll&a){scanf("%lld",&a);}
^
Judge Result
Set Name
Sample
Subtask1
Subtask2
Subtask3
Score / Max Score
0 / 0
120 / 120
90 / 90
140 / 140
Status
Set Name
Test Cases
Sample
sub0_in1.txt, sub0_in2.txt
Subtask1
sub1_in1.txt, sub1_in2.txt
Subtask2
sub2_in1.txt, sub2_in2.txt, sub2_in3.txt
Subtask3
sub0_in1.txt, sub0_in2.txt, sub1_in1.txt, sub1_in2.txt, sub2_in1.txt, sub2_in2.txt, sub2_in3.txt, sub3_in1.txt, sub3_in2.txt
Case Name
Status
Exec Time
Memory
sub0_in1.txt
AC
1 ms
256 KB
sub0_in2.txt
AC
1 ms
256 KB
sub1_in1.txt
AC
1 ms
256 KB
sub1_in2.txt
AC
1 ms
256 KB
sub2_in1.txt
AC
1 ms
256 KB
sub2_in2.txt
AC
1 ms
256 KB
sub2_in3.txt
AC
1 ms
256 KB
sub3_in1.txt
AC
1 ms
256 KB
sub3_in2.txt
AC
1 ms
256 KB